diff -r b183ec05bd8c -r 19bba8228ff0 terminalsecurity/SCP/SCPServer/src/SCPPluginManager.cpp --- a/terminalsecurity/SCP/SCPServer/src/SCPPluginManager.cpp Tue Aug 31 16:04:06 2010 +0300 +++ b/terminalsecurity/SCP/SCPServer/src/SCPPluginManager.cpp Wed Sep 01 12:27:42 2010 +0100 @@ -151,52 +151,60 @@ // Status : Approved // --------------------------------------------------------- // -CSCPParamObject* CSCPPluginManager :: PostEvent(TInt aID, CSCPParamObject& aParam) { +CSCPParamObject* CSCPPluginManager::PostEvent( TInt aID, CSCPParamObject& aParam ) + { Dprint(_L("[CSCPPluginManager]-> PostEvent() >>>")); // If the plugins aren't loaded, load them here TBool okToPost = ETrue; - TInt lErr = KErrNone; - if(!iPluginsLoaded) { - TRAP(lErr, LoadPluginsL()); - - if(lErr != KErrNone) { - Dprint((_L("CSCPPluginManager::PostEvent(): ERROR loading plugins: %d"), lErr)); + if ( !iPluginsLoaded ) + { + TRAPD( err, LoadPluginsL() ); + if ( err != KErrNone ) + { + Dprint( (_L("CSCPPluginManager::PostEvent(): ERROR loading plugins: %d"), err )); okToPost = EFalse; + } } - } - lErr = KErrNone; CSCPParamObject* reply = NULL; - TRAP(lErr, reply = CSCPParamObject :: NewL()); - - if(lErr != KErrNone) { - return NULL; - } - - lErr = KErrNone; - TInt lPolicyRunStatus = KErrNone; + if ( okToPost ) + { + // Send the incoming event to all plugins + TBool continueProcessing = ETrue; - if(okToPost) { - // Send the incoming event to all plugins - for(TInt i = 0; i < iPlugins.Count(); i++) { + for ( TInt i = 0; i < iPlugins.Count(); i++ ) + { // The method shouldn't leave, but make sure - TRAP(lErr, iPlugins[i]->HandleEventL(aID, aParam, *reply)); - - if(reply->Get(KSCPParamStatus, lPolicyRunStatus) == KErrNone) { - if(lPolicyRunStatus != KErrNone) { - lErr = lPolicyRunStatus; + TRAPD( err, reply = iPlugins[i]->HandleEvent( aID, aParam ) ); + if ( err != KErrNone ) + { + // Plugin error + continue; } - } - } + + // Check reply + if ( reply != NULL ) + { + Dprint(_L("[CSCPPluginManager]-> The event '%d' was consumed..."), aID); + continueProcessing = EFalse; + } + else + { + // No action requested + } - reply->Set(KSCPParamStatus, lErr); - } + if ( !continueProcessing ) + { + break; // Event consumed, don't continue + } + } + } Dprint(_L("[CSCPPluginManager]-> PostEvent() okToPost=%d<<<"), okToPost); return reply; -} + } // --------------------------------------------------------- // void CSCPPluginManager::~CSCPPluginManager()