diff -r d6dafc5d983f -r 1627c337e51e javacommons/comms/tsrc/javaapi/src/commsextensionplugin.cpp --- a/javacommons/comms/tsrc/javaapi/src/commsextensionplugin.cpp Fri Oct 15 12:29:39 2010 +0300 +++ b/javacommons/comms/tsrc/javaapi/src/commsextensionplugin.cpp Fri Oct 29 11:49:32 2010 +0300 @@ -36,6 +36,7 @@ const int MODULE_ID_SLEEP_1S = 1000; const int MODULE_ID_SLEEP_5S = 5000; const int MODULE_ID_SLEEP_10S = 10000; +const int MODULE_ID_DELAY_REPLY = 11000; #ifdef __SYMBIAN32__ java::captain::ExtensionPluginInterface* getExtensionPlugin() @@ -68,7 +69,7 @@ return result; } -CommsExtensionPlugin::CommsExtensionPlugin() : mCore(0), mComms(0) +CommsExtensionPlugin::CommsExtensionPlugin() : mCore(0), mComms(0), mDelayedReplyCount(0) { JELOG2(EJavaComms); } @@ -93,6 +94,7 @@ mComms->registerListener(MODULE_ID_SLEEP_1S, this); mComms->registerListener(MODULE_ID_SLEEP_5S, this); mComms->registerListener(MODULE_ID_SLEEP_10S, this); + mComms->registerListener(MODULE_ID_DELAY_REPLY, this); } void CommsExtensionPlugin::stopPlugin() @@ -107,6 +109,7 @@ mComms->unregisterListener(MODULE_ID_SLEEP_1S, this); mComms->unregisterListener(MODULE_ID_SLEEP_5S, this); mComms->unregisterListener(MODULE_ID_SLEEP_10S, this); + mComms->unregisterListener(MODULE_ID_DELAY_REPLY, this); mCore = 0; mComms = 0; @@ -197,6 +200,28 @@ #ifdef __SYMBIAN32__ break; #endif + case MODULE_ID_DELAY_REPLY: + { + if (mDelayedReplyCount == 0) + { + mDelayedReply = aMessage; + mDelayedReplyCount++; + } + else + { + // reply to first message + CommsMessage reply; + reply.replyTo(mDelayedReply); + mComms->send(reply); + + // reply to message client + reply.replyTo(aMessage); + mComms->send(reply); + mDelayedReplyCount = 0; + } + } + break; + default: mReply = aMessage; mReply.setReceiver(aMessage.getSender());