javacommons/comms/tsrc/javaapi/src/commsextensionplugin.cpp
changeset 87 1627c337e51e
parent 21 2a9601315dfc
equal deleted inserted replaced
80:d6dafc5d983f 87:1627c337e51e
    34 const int MODULE_ID_DATA_CHECK  = 902;
    34 const int MODULE_ID_DATA_CHECK  = 902;
    35 const int MODULE_ID_NO_REPLY    = 903;
    35 const int MODULE_ID_NO_REPLY    = 903;
    36 const int MODULE_ID_SLEEP_1S    = 1000;
    36 const int MODULE_ID_SLEEP_1S    = 1000;
    37 const int MODULE_ID_SLEEP_5S    = 5000;
    37 const int MODULE_ID_SLEEP_5S    = 5000;
    38 const int MODULE_ID_SLEEP_10S   = 10000;
    38 const int MODULE_ID_SLEEP_10S   = 10000;
       
    39 const int MODULE_ID_DELAY_REPLY = 11000;
    39 
    40 
    40 #ifdef __SYMBIAN32__
    41 #ifdef __SYMBIAN32__
    41 java::captain::ExtensionPluginInterface* getExtensionPlugin()
    42 java::captain::ExtensionPluginInterface* getExtensionPlugin()
    42 {
    43 {
    43 #else
    44 #else
    66         ELOG1(EJavaComms, "wstringToUtf8 failed: %s", e.toString().c_str());
    67         ELOG1(EJavaComms, "wstringToUtf8 failed: %s", e.toString().c_str());
    67     }
    68     }
    68     return result;
    69     return result;
    69 }
    70 }
    70 
    71 
    71 CommsExtensionPlugin::CommsExtensionPlugin() : mCore(0), mComms(0)
    72 CommsExtensionPlugin::CommsExtensionPlugin() : mCore(0), mComms(0), mDelayedReplyCount(0)
    72 {
    73 {
    73     JELOG2(EJavaComms);
    74     JELOG2(EJavaComms);
    74 }
    75 }
    75 
    76 
    76 CommsExtensionPlugin::~CommsExtensionPlugin()
    77 CommsExtensionPlugin::~CommsExtensionPlugin()
    91     mComms->registerListener(MODULE_ID_DATA_CHECK, this);
    92     mComms->registerListener(MODULE_ID_DATA_CHECK, this);
    92     mComms->registerListener(MODULE_ID_NO_REPLY, this);
    93     mComms->registerListener(MODULE_ID_NO_REPLY, this);
    93     mComms->registerListener(MODULE_ID_SLEEP_1S, this);
    94     mComms->registerListener(MODULE_ID_SLEEP_1S, this);
    94     mComms->registerListener(MODULE_ID_SLEEP_5S, this);
    95     mComms->registerListener(MODULE_ID_SLEEP_5S, this);
    95     mComms->registerListener(MODULE_ID_SLEEP_10S, this);
    96     mComms->registerListener(MODULE_ID_SLEEP_10S, this);
       
    97     mComms->registerListener(MODULE_ID_DELAY_REPLY, this);
    96 }
    98 }
    97 
    99 
    98 void CommsExtensionPlugin::stopPlugin()
   100 void CommsExtensionPlugin::stopPlugin()
    99 {
   101 {
   100     JELOG2(EJavaComms);
   102     JELOG2(EJavaComms);
   105     mComms->unregisterListener(MODULE_ID_DATA_CHECK, this);
   107     mComms->unregisterListener(MODULE_ID_DATA_CHECK, this);
   106     mComms->unregisterListener(MODULE_ID_NO_REPLY, this);
   108     mComms->unregisterListener(MODULE_ID_NO_REPLY, this);
   107     mComms->unregisterListener(MODULE_ID_SLEEP_1S, this);
   109     mComms->unregisterListener(MODULE_ID_SLEEP_1S, this);
   108     mComms->unregisterListener(MODULE_ID_SLEEP_5S, this);
   110     mComms->unregisterListener(MODULE_ID_SLEEP_5S, this);
   109     mComms->unregisterListener(MODULE_ID_SLEEP_10S, this);
   111     mComms->unregisterListener(MODULE_ID_SLEEP_10S, this);
       
   112     mComms->unregisterListener(MODULE_ID_DELAY_REPLY, this);
   110 
   113 
   111     mCore = 0;
   114     mCore = 0;
   112     mComms = 0;
   115     mComms = 0;
   113 }
   116 }
   114 
   117 
   195         usleep(1000*aMessage.getModuleId());
   198         usleep(1000*aMessage.getModuleId());
   196         // fall through
   199         // fall through
   197 #ifdef __SYMBIAN32__
   200 #ifdef __SYMBIAN32__
   198         break;
   201         break;
   199 #endif
   202 #endif
       
   203     case MODULE_ID_DELAY_REPLY:
       
   204     {
       
   205         if (mDelayedReplyCount == 0)
       
   206         {
       
   207             mDelayedReply = aMessage;
       
   208             mDelayedReplyCount++;
       
   209         }
       
   210         else
       
   211         {
       
   212             // reply to first message
       
   213             CommsMessage reply;
       
   214             reply.replyTo(mDelayedReply);
       
   215             mComms->send(reply);
       
   216 
       
   217             // reply to message client
       
   218             reply.replyTo(aMessage);
       
   219             mComms->send(reply);
       
   220             mDelayedReplyCount = 0;
       
   221         }
       
   222     }
       
   223     break;
       
   224 
   200     default:
   225     default:
   201         mReply = aMessage;
   226         mReply = aMessage;
   202         mReply.setReceiver(aMessage.getSender());
   227         mReply.setReceiver(aMessage.getSender());
   203         mComms->send(mReply);
   228         mComms->send(mReply);
   204         break;
   229         break;