contentcontrolsrv/hsccclient/hsccapiclient/src/hsccapiclient.cpp
branchRCL_3
changeset 18 bd874ee5e5e2
parent 2 b7904b40483f
child 64 b276298d5729
equal deleted inserted replaced
9:d0529222e3f0 18:bd874ee5e5e2
   100 // CHsCcApiClient::RunL()
   100 // CHsCcApiClient::RunL()
   101 // -----------------------------------------------------------------------------
   101 // -----------------------------------------------------------------------------
   102 //
   102 //
   103 void CHsCcApiClient::RunL()
   103 void CHsCcApiClient::RunL()
   104     {
   104     {
   105     if ( !iStatus.Int() )
   105     TInt err( iStatus.Int() );
       
   106     HBufC8* header( NULL );
       
   107     TPtr8 headerPtr( NULL, 0 );
       
   108 
       
   109     if ( !err )
       
   110         {
       
   111         // Read API request header
       
   112         header = iApiHeader->AllocL();
       
   113         CleanupStack::PushL( header );
       
   114         headerPtr.Set( header->Des() );
       
   115         }
       
   116 
       
   117     // Receive next API notification
       
   118     WaitForApiNtfL();
       
   119     
       
   120     if ( !err )
   106         {
   121         {
   107         // Get received message header
   122         // Get received message header
   108         CCcSrvMsg* message = CCcSrvMsg::NewL();
   123         CCcSrvMsg* message = CCcSrvMsg::NewL();
   109         CleanupStack::PushL( message );
   124         CleanupStack::PushL( message );
   110         RDesReadStream stream( iApiHeaderPtr );
   125         RDesReadStream stream( headerPtr );
   111         CleanupClosePushL( stream );
   126         CleanupClosePushL( stream );
   112         message->InternalizeHeaderL( stream );
   127         message->InternalizeHeaderL( stream );
   113         CleanupStack::PopAndDestroy( &stream );
   128         CleanupStack::PopAndDestroy( &stream );
   114 
   129 
   115         switch ( message->MsgId() )
   130         switch ( message->MsgId() )
   136                 // No action required
   151                 // No action required
   137                 break;
   152                 break;
   138             }
   153             }
   139         CleanupStack::PopAndDestroy( message );
   154         CleanupStack::PopAndDestroy( message );
   140         }
   155         }
   141     
   156     if ( header )
   142     // Receive next API notification
   157         {
   143     WaitForApiNtfL();
   158         CleanupStack::PopAndDestroy( header );
   144 
   159         }
   145     }
   160     }
   146 
   161 
   147 // -----------------------------------------------------------------------------
   162 // -----------------------------------------------------------------------------
   148 // CHsCcApiClient::DoCancel()
   163 // CHsCcApiClient::DoCancel()
   149 // -----------------------------------------------------------------------------
   164 // -----------------------------------------------------------------------------
   186     TPckgBuf<TUint32> receiver;
   201     TPckgBuf<TUint32> receiver;
   187     err = iSession.Send( ECcApiReq, provider, sender, receiver, msgPtr );
   202     err = iSession.Send( ECcApiReq, provider, sender, receiver, msgPtr );
   188     
   203     
   189     if ( !err )
   204     if ( !err )
   190         {
   205         {
   191         // Internalize WidgetListResp API response
   206         // Internalize response message
   192         CCcSrvMsg* respMsg = CCcSrvMsg::NewL();
   207         TUint32 trId;
   193         CleanupStack::PushL( respMsg );
   208         TUint32 dataSize;
   194         RDesReadStream respStream( msgPtr );
   209         err = InternalizeRespL( msgPtr, trId, dataSize );
   195         CleanupClosePushL( respStream );
   210         if ( !err && dataSize )
   196         respMsg->InternalizeHeaderL( respStream );
       
   197         CleanupStack::PopAndDestroy( &respStream );
       
   198         err = respMsg->Status();
       
   199         if ( !err )
       
   200             {
   211             {
   201             if ( respMsg->DataSize() )
   212             // Internalize API response data
   202                 {
   213             err = InternalizeContentInfoArrayL( aArray, trId, dataSize );
   203                 // Get API response data
       
   204                 HBufC8* dataBuf = HBufC8::NewL( respMsg->DataSize() );
       
   205                 CleanupStack::PushL( dataBuf );
       
   206                 TPtr8 dataPtr( NULL, 0 );
       
   207                 dataPtr.Set( dataBuf->Des() );
       
   208                 TPckgBuf<TUint32> trId( respMsg->TrId() );
       
   209                 err = iSession.GetMsgData( trId, dataPtr );
       
   210                 if ( !err )
       
   211                     {
       
   212                     // Internalize API response data
       
   213                     RDesReadStream dataStream( dataPtr );
       
   214                     CleanupClosePushL( dataStream );
       
   215                     aArray.InternalizeL( dataStream );                    
       
   216                     CleanupStack::PopAndDestroy( &dataStream );
       
   217                     }
       
   218                 CleanupStack::PopAndDestroy( dataBuf );
       
   219                 }
       
   220             }
   214             }
   221         CleanupStack::PopAndDestroy( respMsg );
   215         }
       
   216 
       
   217     // Cleanup
       
   218     CleanupStack::PopAndDestroy( msgBuf );
       
   219     CleanupStack::PopAndDestroy( reqMsg );
       
   220 
       
   221     return err;
       
   222     }
       
   223 
       
   224 // -----------------------------------------------------------------------------
       
   225 // CHsCcApiClient::WidgetListL
       
   226 // -----------------------------------------------------------------------------
       
   227 //
       
   228 TInt CHsCcApiClient::WidgetListL( 
       
   229     CHsContentInfo& aInfo, CHsContentInfoArray& aArray )
       
   230     {
       
   231     TInt err( KErrNone );
       
   232     
       
   233     // Create WidgetListReq API request
       
   234     CCcSrvMsg* reqMsg = CCcSrvMsg::NewL();
       
   235     CleanupStack::PushL( reqMsg );
       
   236     reqMsg->SetMsgId( EHsCcWidgetListReq );
       
   237     reqMsg->SetTrId( 0 );
       
   238 
       
   239     // Marshal WidgetListReq data to a descriptor
       
   240     HBufC8* dataBuf = aInfo.MarshalL();
       
   241     TPtr8 dataPtr( NULL, 0 );
       
   242     dataPtr.Set( dataBuf->Des() );
       
   243     reqMsg->SetData( dataPtr );
       
   244     
       
   245     delete dataBuf;
       
   246     dataBuf = NULL;
       
   247     
       
   248     // Marshal API request
       
   249     HBufC8* msgBuf = reqMsg->MarshalL();
       
   250     CleanupStack::PushL( msgBuf );
       
   251     TPtr8 msgPtr( NULL, 0 );
       
   252     msgPtr.Set( msgBuf->Des() );
       
   253  
       
   254     // Send API request
       
   255     // Sender and receiver address not defined -> message is routed
       
   256     // according to the provider id
       
   257     TPckgBuf<TUint32> provider( ECcHomescreen );
       
   258     TPckgBuf<TUint32> sender;
       
   259     TPckgBuf<TUint32> receiver;
       
   260     err = iSession.Send( ECcApiReq, provider, sender, receiver, msgPtr );
       
   261     
       
   262     if ( !err )
       
   263         {
       
   264         // Internalize response message
       
   265         TUint32 trId;
       
   266         TUint32 dataSize;
       
   267         err = InternalizeRespL( msgPtr, trId, dataSize );
       
   268         if ( !err && dataSize )
       
   269             {
       
   270             // Internalize API response data
       
   271             err = InternalizeContentInfoArrayL( aArray, trId, dataSize );
       
   272             }
   222         }
   273         }
   223 
   274 
   224     // Cleanup
   275     // Cleanup
   225     CleanupStack::PopAndDestroy( msgBuf );
   276     CleanupStack::PopAndDestroy( msgBuf );
   226     CleanupStack::PopAndDestroy( reqMsg );
   277     CleanupStack::PopAndDestroy( reqMsg );
   257     TPckgBuf<TUint32> receiver;
   308     TPckgBuf<TUint32> receiver;
   258     err = iSession.Send( ECcApiReq, provider, sender, receiver, msgPtr );
   309     err = iSession.Send( ECcApiReq, provider, sender, receiver, msgPtr );
   259     
   310     
   260     if ( !err )
   311     if ( !err )
   261         {
   312         {
   262         // Internalize ViewListResp API response
   313         // Internalize response message
   263         CCcSrvMsg* respMsg = CCcSrvMsg::NewL();
   314         TUint32 trId;
   264         CleanupStack::PushL( respMsg );
   315         TUint32 dataSize;
   265         RDesReadStream respStream( msgPtr );
   316         err = InternalizeRespL( msgPtr, trId, dataSize );
   266         CleanupClosePushL( respStream );
   317         if ( !err && dataSize )
   267         respMsg->InternalizeHeaderL( respStream );
       
   268         CleanupStack::PopAndDestroy( &respStream );
       
   269         err = respMsg->Status();
       
   270         if ( !err )
       
   271             {
   318             {
   272             if ( respMsg->DataSize() )
   319             // Internalize API response data
   273                 {
   320             err = InternalizeContentInfoArrayL( aArray, trId, dataSize );
   274                 // Get API response data
       
   275                 HBufC8* dataBuf = HBufC8::NewL( respMsg->DataSize() );
       
   276                 CleanupStack::PushL( dataBuf );
       
   277                 TPtr8 dataPtr( NULL, 0 );
       
   278                 dataPtr.Set( dataBuf->Des() );
       
   279                 TPckgBuf<TUint32> trId( respMsg->TrId() );
       
   280                 err = iSession.GetMsgData( trId, dataPtr );
       
   281                 if ( !err )
       
   282                     {
       
   283                     // Internalize API response data
       
   284                     RDesReadStream dataStream( dataPtr );
       
   285                     CleanupClosePushL( dataStream );
       
   286                     aArray.InternalizeL( dataStream );                    
       
   287                     CleanupStack::PopAndDestroy( &dataStream );
       
   288                     }
       
   289                 CleanupStack::PopAndDestroy( dataBuf );
       
   290                 }
       
   291             }
   321             }
   292         CleanupStack::PopAndDestroy( respMsg );
       
   293         }
   322         }
   294 
   323 
   295     // Cleanup
   324     // Cleanup
   296     CleanupStack::PopAndDestroy( msgBuf );
   325     CleanupStack::PopAndDestroy( msgBuf );
   297     CleanupStack::PopAndDestroy( reqMsg );
   326     CleanupStack::PopAndDestroy( reqMsg );
   328     TPckgBuf<TUint32> receiver;
   357     TPckgBuf<TUint32> receiver;
   329     err = iSession.Send( ECcApiReq, provider, sender, receiver, msgPtr );
   358     err = iSession.Send( ECcApiReq, provider, sender, receiver, msgPtr );
   330     
   359     
   331     if ( !err )
   360     if ( !err )
   332         {
   361         {
   333         // Internalize AppListResp API response
   362         // Internalize response message
   334         CCcSrvMsg* respMsg = CCcSrvMsg::NewL();
   363         TUint32 trId;
   335         CleanupStack::PushL( respMsg );
   364         TUint32 dataSize;
   336         RDesReadStream respStream( msgPtr );
   365         err = InternalizeRespL( msgPtr, trId, dataSize );
   337         CleanupClosePushL( respStream );
   366         if ( !err && dataSize )
   338         respMsg->InternalizeHeaderL( respStream );
       
   339         CleanupStack::PopAndDestroy( &respStream );
       
   340         err = respMsg->Status();
       
   341         if ( !err )
       
   342             {
   367             {
   343             if ( respMsg->DataSize() )
   368             // Internalize API response data
   344                 {
   369             err = InternalizeContentInfoArrayL( aArray, trId, dataSize );
   345                 // Get API response data
       
   346                 HBufC8* dataBuf = HBufC8::NewL( respMsg->DataSize() );
       
   347                 CleanupStack::PushL( dataBuf );
       
   348                 TPtr8 dataPtr( NULL, 0 );
       
   349                 dataPtr.Set( dataBuf->Des() );
       
   350                 TPckgBuf<TUint32> trId( respMsg->TrId() );
       
   351                 err = iSession.GetMsgData( trId, dataPtr );
       
   352                 if ( !err )
       
   353                     {
       
   354                     // Internalize API response data
       
   355                     RDesReadStream dataStream( dataPtr );
       
   356                     CleanupClosePushL( dataStream );
       
   357                     aArray.InternalizeL( dataStream );                    
       
   358                     CleanupStack::PopAndDestroy( &dataStream );
       
   359                     }
       
   360                 CleanupStack::PopAndDestroy( dataBuf );
       
   361                 }
       
   362             }
   370             }
   363         CleanupStack::PopAndDestroy( respMsg );
       
   364         }
   371         }
   365 
   372 
   366     // Cleanup
   373     // Cleanup
   367     CleanupStack::PopAndDestroy( msgBuf );
   374     CleanupStack::PopAndDestroy( msgBuf );
   368     CleanupStack::PopAndDestroy( reqMsg );
   375     CleanupStack::PopAndDestroy( reqMsg );
   407     TPckgBuf<TUint32> receiver;
   414     TPckgBuf<TUint32> receiver;
   408     err = iSession.Send( ECcApiReq, provider, sender, receiver, msgPtr );
   415     err = iSession.Send( ECcApiReq, provider, sender, receiver, msgPtr );
   409     
   416     
   410     if ( !err )
   417     if ( !err )
   411         {
   418         {
   412         // Internalize AddWidgetResp API response
   419         // Internalize response message
   413         CCcSrvMsg* respMsg = CCcSrvMsg::NewL();
   420         TUint32 trId;
   414         CleanupStack::PushL( respMsg );
   421         TUint32 dataSize;
   415         RDesReadStream respStream( msgPtr );
   422         err = InternalizeRespL( msgPtr, trId, dataSize );
   416         CleanupClosePushL( respStream );
       
   417         respMsg->InternalizeHeaderL( respStream );
       
   418         CleanupStack::PopAndDestroy( &respStream );
       
   419         err = respMsg->Status();
       
   420         CleanupStack::PopAndDestroy( respMsg );
       
   421         }
   423         }
   422 
   424 
   423     // Cleanup
   425     // Cleanup
   424     CleanupStack::PopAndDestroy( msgBuf );
   426     CleanupStack::PopAndDestroy( msgBuf );
   425     CleanupStack::PopAndDestroy( reqMsg );
   427     CleanupStack::PopAndDestroy( reqMsg );
   464     TPckgBuf<TUint32> receiver;
   466     TPckgBuf<TUint32> receiver;
   465     err = iSession.Send( ECcApiReq, provider, sender, receiver, msgPtr );
   467     err = iSession.Send( ECcApiReq, provider, sender, receiver, msgPtr );
   466     
   468     
   467     if ( !err )
   469     if ( !err )
   468         {
   470         {
   469         // Internalize RemoveWidgetResp API response
   471         // Internalize response message
   470         CCcSrvMsg* respMsg = CCcSrvMsg::NewL();
   472         TUint32 trId;
   471         CleanupStack::PushL( respMsg );
   473         TUint32 dataSize;
   472         RDesReadStream respStream( msgPtr );
   474         err = InternalizeRespL( msgPtr, trId, dataSize );
   473         CleanupClosePushL( respStream );
       
   474         respMsg->InternalizeHeaderL( respStream );
       
   475         CleanupStack::PopAndDestroy( &respStream );
       
   476         err = respMsg->Status();
       
   477         CleanupStack::PopAndDestroy( respMsg );
       
   478         }
   475         }
   479 
   476 
   480     // Cleanup
   477     // Cleanup
   481     CleanupStack::PopAndDestroy( msgBuf );
   478     CleanupStack::PopAndDestroy( msgBuf );
   482     CleanupStack::PopAndDestroy( reqMsg );
   479     CleanupStack::PopAndDestroy( reqMsg );
   521     TPckgBuf<TUint32> receiver;
   518     TPckgBuf<TUint32> receiver;
   522     err = iSession.Send( ECcApiReq, provider, sender, receiver, msgPtr );
   519     err = iSession.Send( ECcApiReq, provider, sender, receiver, msgPtr );
   523     
   520     
   524     if ( !err )
   521     if ( !err )
   525         {
   522         {
   526         // Internalize AddViewResp API response
   523         // Internalize response message
   527         CCcSrvMsg* respMsg = CCcSrvMsg::NewL();
   524         TUint32 trId;
   528         CleanupStack::PushL( respMsg );
   525         TUint32 dataSize;
   529         RDesReadStream respStream( msgPtr );
   526         err = InternalizeRespL( msgPtr, trId, dataSize );
   530         CleanupClosePushL( respStream );
       
   531         respMsg->InternalizeHeaderL( respStream );
       
   532         CleanupStack::PopAndDestroy( &respStream );
       
   533         err = respMsg->Status();
       
   534         CleanupStack::PopAndDestroy( respMsg );
       
   535         }
   527         }
   536 
   528 
   537     // Cleanup
   529     // Cleanup
   538     CleanupStack::PopAndDestroy( msgBuf );
   530     CleanupStack::PopAndDestroy( msgBuf );
   539     CleanupStack::PopAndDestroy( reqMsg );
   531     CleanupStack::PopAndDestroy( reqMsg );
   578     TPckgBuf<TUint32> receiver;
   570     TPckgBuf<TUint32> receiver;
   579     err = iSession.Send( ECcApiReq, provider, sender, receiver, msgPtr );
   571     err = iSession.Send( ECcApiReq, provider, sender, receiver, msgPtr );
   580     
   572     
   581     if ( !err )
   573     if ( !err )
   582         {
   574         {
   583         // Internalize RemoveViewResp API response
   575         // Internalize response message
   584         CCcSrvMsg* respMsg = CCcSrvMsg::NewL();
   576         TUint32 trId;
   585         CleanupStack::PushL( respMsg );
   577         TUint32 dataSize;
   586         RDesReadStream respStream( msgPtr );
   578         err = InternalizeRespL( msgPtr, trId, dataSize );
   587         CleanupClosePushL( respStream );
       
   588         respMsg->InternalizeHeaderL( respStream );
       
   589         CleanupStack::PopAndDestroy( &respStream );
       
   590         err = respMsg->Status();
       
   591         CleanupStack::PopAndDestroy( respMsg );
       
   592         }
   579         }
   593 
   580 
   594     // Cleanup
   581     // Cleanup
   595     CleanupStack::PopAndDestroy( msgBuf );
   582     CleanupStack::PopAndDestroy( msgBuf );
   596     CleanupStack::PopAndDestroy( reqMsg );
   583     CleanupStack::PopAndDestroy( reqMsg );
   635     TPckgBuf<TUint32> receiver;
   622     TPckgBuf<TUint32> receiver;
   636     err = iSession.Send( ECcApiReq, provider, sender, receiver, msgPtr );
   623     err = iSession.Send( ECcApiReq, provider, sender, receiver, msgPtr );
   637     
   624     
   638     if ( !err )
   625     if ( !err )
   639         {
   626         {
   640         // Internalize ActivateViewResp API response
   627         // Internalize response message
   641         CCcSrvMsg* respMsg = CCcSrvMsg::NewL();
   628         TUint32 trId;
   642         CleanupStack::PushL( respMsg );
   629         TUint32 dataSize;
   643         RDesReadStream respStream( msgPtr );
   630         err = InternalizeRespL( msgPtr, trId, dataSize );
   644         CleanupClosePushL( respStream );
       
   645         respMsg->InternalizeHeaderL( respStream );
       
   646         CleanupStack::PopAndDestroy( &respStream );
       
   647         err = respMsg->Status();
       
   648         CleanupStack::PopAndDestroy( respMsg );
       
   649         }
   631         }
   650 
   632 
   651     // Cleanup
   633     // Cleanup
   652     CleanupStack::PopAndDestroy( msgBuf );
   634     CleanupStack::PopAndDestroy( msgBuf );
   653     CleanupStack::PopAndDestroy( reqMsg );
   635     CleanupStack::PopAndDestroy( reqMsg );
   692     TPckgBuf<TUint32> receiver;
   674     TPckgBuf<TUint32> receiver;
   693     err = iSession.Send( ECcApiReq, provider, sender, receiver, msgPtr );
   675     err = iSession.Send( ECcApiReq, provider, sender, receiver, msgPtr );
   694     
   676     
   695     if ( !err )
   677     if ( !err )
   696         {
   678         {
   697         // Internalize ActivateAppResp API response
   679         // Internalize response message
   698         CCcSrvMsg* respMsg = CCcSrvMsg::NewL();
   680         TUint32 trId;
   699         CleanupStack::PushL( respMsg );
   681         TUint32 dataSize;
   700         RDesReadStream respStream( msgPtr );
   682         err = InternalizeRespL( msgPtr, trId, dataSize );
   701         CleanupClosePushL( respStream );
       
   702         respMsg->InternalizeHeaderL( respStream );
       
   703         CleanupStack::PopAndDestroy( &respStream );
       
   704         err = respMsg->Status();
       
   705         CleanupStack::PopAndDestroy( respMsg );
       
   706         }
   683         }
   707 
   684 
   708     // Cleanup
   685     // Cleanup
   709     CleanupStack::PopAndDestroy( msgBuf );
   686     CleanupStack::PopAndDestroy( msgBuf );
   710     CleanupStack::PopAndDestroy( reqMsg );
   687     CleanupStack::PopAndDestroy( reqMsg );
   741     TPckgBuf<TUint32> receiver;
   718     TPckgBuf<TUint32> receiver;
   742     err = iSession.Send( ECcApiReq, provider, sender, receiver, msgPtr );
   719     err = iSession.Send( ECcApiReq, provider, sender, receiver, msgPtr );
   743     
   720     
   744     if ( !err )
   721     if ( !err )
   745         {
   722         {
   746         // Internalize AppListResp API response
   723         // Internalize response message
   747         CCcSrvMsg* respMsg = CCcSrvMsg::NewL();
   724         TUint32 trId;
   748         CleanupStack::PushL( respMsg );
   725         TUint32 dataSize;
   749         RDesReadStream respStream( msgPtr );
   726         err = InternalizeRespL( msgPtr, trId, dataSize );
   750         CleanupClosePushL( respStream );
   727         if ( !err && dataSize )
   751         respMsg->InternalizeHeaderL( respStream );
       
   752         CleanupStack::PopAndDestroy( &respStream );
       
   753         err = respMsg->Status();
       
   754         if ( !err )
       
   755             {
   728             {
   756             if ( respMsg->DataSize() )
   729             // Internalize API response data
   757                 {
   730             err = InternalizeContentInfoL( aInfo, trId, dataSize );
   758                 // Get API response data
       
   759                 HBufC8* dataBuf = HBufC8::NewL( respMsg->DataSize() );
       
   760                 CleanupStack::PushL( dataBuf );
       
   761                 TPtr8 dataPtr( NULL, 0 );
       
   762                 dataPtr.Set( dataBuf->Des() );
       
   763                 TPckgBuf<TUint32> trId( respMsg->TrId() );
       
   764                 err = iSession.GetMsgData( trId, dataPtr );
       
   765                 if ( !err )
       
   766                     {
       
   767                     // Internalize API response data
       
   768                     RDesReadStream dataStream( dataPtr );
       
   769                     CleanupClosePushL( dataStream );
       
   770                     aInfo.InternalizeL( dataStream );                    
       
   771                     CleanupStack::PopAndDestroy( &dataStream );
       
   772                     }
       
   773                 CleanupStack::PopAndDestroy( dataBuf );
       
   774                 }
       
   775             }
   731             }
   776         CleanupStack::PopAndDestroy( respMsg );
       
   777         }
   732         }
   778 
   733 
   779     // Cleanup
   734     // Cleanup
   780     CleanupStack::PopAndDestroy( msgBuf );
   735     CleanupStack::PopAndDestroy( msgBuf );
   781     CleanupStack::PopAndDestroy( reqMsg );
   736     CleanupStack::PopAndDestroy( reqMsg );
   812     TPckgBuf<TUint32> receiver;
   767     TPckgBuf<TUint32> receiver;
   813     err = iSession.Send( ECcApiReq, provider, sender, receiver, msgPtr );
   768     err = iSession.Send( ECcApiReq, provider, sender, receiver, msgPtr );
   814     
   769     
   815     if ( !err )
   770     if ( !err )
   816         {
   771         {
   817         // Internalize AppListResp API response
   772         // Internalize response message
   818         CCcSrvMsg* respMsg = CCcSrvMsg::NewL();
   773         TUint32 trId;
   819         CleanupStack::PushL( respMsg );
   774         TUint32 dataSize;
   820         RDesReadStream respStream( msgPtr );
   775         err = InternalizeRespL( msgPtr, trId, dataSize );
   821         CleanupClosePushL( respStream );
   776         if ( !err && dataSize )
   822         respMsg->InternalizeHeaderL( respStream );
       
   823         CleanupStack::PopAndDestroy( &respStream );
       
   824         err = respMsg->Status();
       
   825         if ( !err )
       
   826             {
   777             {
   827             if ( respMsg->DataSize() )
   778             // Internalize API response data
   828                 {
   779             err = InternalizeContentInfoL( aInfo, trId, dataSize );
   829                 // Get API response data
       
   830                 HBufC8* dataBuf = HBufC8::NewL( respMsg->DataSize() );
       
   831                 CleanupStack::PushL( dataBuf );
       
   832                 TPtr8 dataPtr( NULL, 0 );
       
   833                 dataPtr.Set( dataBuf->Des() );
       
   834                 TPckgBuf<TUint32> trId( respMsg->TrId() );
       
   835                 err = iSession.GetMsgData( trId, dataPtr );
       
   836                 if ( !err )
       
   837                     {
       
   838                     // Internalize API response data
       
   839                     RDesReadStream dataStream( dataPtr );
       
   840                     CleanupClosePushL( dataStream );
       
   841                     aInfo.InternalizeL( dataStream );                    
       
   842                     CleanupStack::PopAndDestroy( &dataStream );
       
   843                     }
       
   844                 CleanupStack::PopAndDestroy( dataBuf );
       
   845                 }
       
   846             }
   780             }
   847         CleanupStack::PopAndDestroy( respMsg );
       
   848         }
   781         }
   849 
   782 
   850     // Cleanup
   783     // Cleanup
   851     CleanupStack::PopAndDestroy( msgBuf );
   784     CleanupStack::PopAndDestroy( msgBuf );
   852     CleanupStack::PopAndDestroy( reqMsg );
   785     CleanupStack::PopAndDestroy( reqMsg );
   876     iSession.WaitForApiNtf( provider, iPckgSender, iPckgReceiver, iApiHeaderPtr, iStatus );
   809     iSession.WaitForApiNtf( provider, iPckgSender, iPckgReceiver, iApiHeaderPtr, iStatus );
   877     SetActive();
   810     SetActive();
   878     
   811     
   879     }
   812     }
   880 
   813 
       
   814 // -----------------------------------------------------------------------------
       
   815 // CHsCcApiClient::InternalizeRespL()
       
   816 // -----------------------------------------------------------------------------
       
   817 //
       
   818 TInt CHsCcApiClient::InternalizeRespL( 
       
   819     TPtr8& aResp, TUint32& aTrId, TUint32& aDataSize )
       
   820     {
       
   821     TInt err( KErrNone );
       
   822     
       
   823     CCcSrvMsg* respMsg = CCcSrvMsg::NewL();
       
   824     CleanupStack::PushL( respMsg );
       
   825     RDesReadStream respStream( aResp );
       
   826     CleanupClosePushL( respStream );
       
   827     respMsg->InternalizeHeaderL( respStream );
       
   828     CleanupStack::PopAndDestroy( &respStream );
       
   829     err = respMsg->Status();
       
   830     aTrId = respMsg->TrId();
       
   831     aDataSize = respMsg->DataSize();
       
   832     CleanupStack::PopAndDestroy( respMsg );
       
   833     
       
   834     return err;
       
   835     }
       
   836 
       
   837 // -----------------------------------------------------------------------------
       
   838 // CHsCcApiClient::InternalizeContentInfoL()
       
   839 // -----------------------------------------------------------------------------
       
   840 //
       
   841 TInt CHsCcApiClient::InternalizeContentInfoL( 
       
   842     CHsContentInfo& aInfo, TUint32 aTrId, TUint32 aDataSize )
       
   843     {
       
   844     TInt err( KErrNone );
       
   845     
       
   846     HBufC8* dataBuf = HBufC8::NewL( aDataSize );
       
   847     CleanupStack::PushL( dataBuf );
       
   848     TPtr8 dataPtr( NULL, 0 );
       
   849     dataPtr.Set( dataBuf->Des() );
       
   850     TPckgBuf<TUint32> trId( aTrId );
       
   851     err = iSession.GetMsgData( trId, dataPtr );
       
   852     if ( !err )
       
   853         {
       
   854         // Internalize API response data
       
   855         RDesReadStream dataStream( dataPtr );
       
   856         CleanupClosePushL( dataStream );
       
   857         aInfo.InternalizeL( dataStream );                    
       
   858         CleanupStack::PopAndDestroy( &dataStream );
       
   859         }
       
   860     CleanupStack::PopAndDestroy( dataBuf );
       
   861 
       
   862     return err;
       
   863     }
       
   864 
       
   865 // -----------------------------------------------------------------------------
       
   866 // CHsCcApiClient::InternalizeContentInfoArrayL()
       
   867 // -----------------------------------------------------------------------------
       
   868 //
       
   869 TInt CHsCcApiClient::InternalizeContentInfoArrayL( 
       
   870     CHsContentInfoArray& aInfo, TUint32 aTrId, TUint32 aDataSize )
       
   871     {
       
   872     TInt err( KErrNone );
       
   873     
       
   874     HBufC8* dataBuf = HBufC8::NewL( aDataSize );
       
   875     CleanupStack::PushL( dataBuf );
       
   876     TPtr8 dataPtr( NULL, 0 );
       
   877     dataPtr.Set( dataBuf->Des() );
       
   878     TPckgBuf<TUint32> trId( aTrId );
       
   879     err = iSession.GetMsgData( trId, dataPtr );
       
   880     if ( !err )
       
   881         {
       
   882         // Internalize API response data
       
   883         RDesReadStream dataStream( dataPtr );
       
   884         CleanupClosePushL( dataStream );
       
   885         aInfo.InternalizeL( dataStream );                    
       
   886         CleanupStack::PopAndDestroy( &dataStream );
       
   887         }
       
   888     CleanupStack::PopAndDestroy( dataBuf );
       
   889 
       
   890     return err;
       
   891     }
       
   892 
   881 // End of file
   893 // End of file