--- 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()