terminalsecurity/SCP/SCPServer/src/SCPPluginManager.cpp
branchRCL_3
changeset 26 19bba8228ff0
parent 25 b183ec05bd8c
--- 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()