idlefw/plugins/wrtdataplugin/src/wrtdataobserver.cpp
branchRCL_3
changeset 19 edd621764147
parent 16 b276298d5729
--- a/idlefw/plugins/wrtdataplugin/src/wrtdataobserver.cpp	Tue Apr 27 16:57:49 2010 +0300
+++ b/idlefw/plugins/wrtdataplugin/src/wrtdataobserver.cpp	Tue May 11 16:30:05 2010 +0300
@@ -26,6 +26,9 @@
 #include "wrtdataobserver.h"
 #include "wrtdatapluginconst.h"
 
+_LIT8( KErrorCode, "ErrorCode" );
+_LIT8( KTransactionId, "TransactionID" );
+
 // ---------------------------------------------------------------------------
 // Factory method construction
 // ---------------------------------------------------------------------------
@@ -167,12 +170,16 @@
     {
     CLiwGenericParamList* inParamList = CLiwGenericParamList::NewL();
     CleanupStack::PushL( inParamList );
+    
     CLiwGenericParamList* outParamList = CLiwGenericParamList::NewL();
     CleanupStack::PushL( outParamList );
         
     // Fill in input list for RequestNotification command
-    inParamList->AppendL(TLiwGenericParam(KType,TLiwVariant(KCpData_PubData)));
-    inParamList->AppendL(TLiwGenericParam(KFilter ,TLiwVariant(aFilter)));
+    inParamList->AppendL(
+        TLiwGenericParam( KType, TLiwVariant( KCpData_PubData ) ) );
+    
+    inParamList->AppendL(
+        TLiwGenericParam( KFilter, TLiwVariant( aFilter ) ) );
         
     iError = KErrNone;
     TRAP( iError, iInterface->ExecuteCmdL( 
@@ -181,9 +188,29 @@
                 *outParamList,
                 0,
                 this ) );
+           
+    TInt pos( 0 );
     
-    CleanupStack::PopAndDestroy( outParamList );
-    CleanupStack::PopAndDestroy( inParamList ); 
+    const TLiwGenericParam* outParam( 
+        outParamList->FindFirst( pos, KErrorCode ) );
+    
+    if ( outParam )
+        {
+        TInt retval( outParam->Value().AsTInt32() );
+        
+        if( retval == KErrNone )
+            {
+            pos = 0;
+            outParam = outParamList->FindFirst( pos, KTransactionId );
+                    
+            if ( outParam )
+                {
+                iTransactionId = outParam->Value().AsTInt32();            
+                }            
+            }                
+        }
+               
+    CleanupStack::PopAndDestroy( 2, inParamList ); 
     }
 
 // ---------------------------------------------------------------------------
@@ -193,24 +220,28 @@
 //
 void CWrtDataObserver::ReleaseL()
     {
-    if( iInterface )
+    if( !iInterface )
         {
-        CLiwGenericParamList* inParamList = CLiwGenericParamList::NewL();
-        CleanupStack::PushL( inParamList );
-        CLiwGenericParamList* outParamList = CLiwGenericParamList::NewL();
-        CleanupStack::PushL( outParamList );
-        
-        TInt err(KErrNone);
-        TRAP(err, iInterface->ExecuteCmdL( 
-                KRequestNotification,
-                *inParamList,
-                *outParamList,
-                KLiwOptCancel,
-                this ));
-        
-        CleanupStack::PopAndDestroy( outParamList );
-        CleanupStack::PopAndDestroy( inParamList );
+        return;
         }
+    
+    CLiwGenericParamList* inParamList = CLiwGenericParamList::NewL();
+    CleanupStack::PushL( inParamList );
+    
+    CLiwGenericParamList* outParamList = CLiwGenericParamList::NewL();
+    CleanupStack::PushL( outParamList );
+       
+    inParamList->AppendL( TLiwGenericParam( KTransactionId,
+        TLiwVariant( iTransactionId ) ) ); 
+            
+    TRAP_IGNORE( iInterface->ExecuteCmdL( 
+            KRequestNotification,
+            *inParamList,
+            *outParamList,
+            KLiwOptCancel,
+            this ) );
+            
+    CleanupStack::PopAndDestroy( 2, inParamList );
     }
 
 // End of file