videofeeds/server/IptvEpgManager/src/CIptvEpgMsgHandler.cpp
branchRCL_3
changeset 23 befca0ec475f
parent 0 96612d01cf9f
equal deleted inserted replaced
22:839377eedc2b 23:befca0ec475f
       
     1 /*
       
     2 * Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of the License "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:    ?Description*
       
    15 */
       
    16 
       
    17 
       
    18 
       
    19 
       
    20 // INCLUDE FILES
       
    21 #include <s32mem.h>
       
    22 #include "IptvDebug.h"
       
    23 #include <bautils.h>
       
    24 #include "CIptvMediaContent.h"
       
    25 #include "TIptvRssSearchQuery.h"
       
    26 #include "CIptvEpgDatabase.h"
       
    27 
       
    28 #include "IptvLiveEpgConstants.h"
       
    29 #include "CIptvMyVideosGlobalFileId.h"
       
    30 #include "IptvClientServerCommon.h"
       
    31 #include "CIptvEpgMsgHandler.h"
       
    32 #include "CIptvServer.h"
       
    33 #include "CIptvEpgManagerImpl.h"
       
    34 #include "CIptvEpgVodClientImpl.h"
       
    35 #include "CIptvEpgSession.h"
       
    36 #include "CIptvVodContentCategoryBriefDetails.h"
       
    37 #include "CIptvVodContentContentBriefDetails.h"
       
    38 #include "CIptvVodContentContentFullDetails.h"
       
    39 #include "CIptvEpgVodMsqQueue.h"
       
    40 
       
    41 // CONSTANTS
       
    42 const TInt KIptvFour = 4;
       
    43 
       
    44 // ============================ MEMBER FUNCTIONS ===============================
       
    45 
       
    46 // -----------------------------------------------------------------------------
       
    47 // CIptvEpgMsgHandler::CIptvEpgMsgHandler
       
    48 // C++ default constructor can NOT contain any code, that
       
    49 // might leave.
       
    50 // -----------------------------------------------------------------------------
       
    51 //
       
    52 CIptvEpgMsgHandler::CIptvEpgMsgHandler(CIptvServer& aServer) : 
       
    53     iVodMsgQueue (NULL ),
       
    54     iEpgSession ( NULL ), 
       
    55     iServer( aServer ), 
       
    56     iCategory( NULL ), 
       
    57     iServiceId( 0 ),
       
    58 	iEpgDatabase( NULL )
       
    59     {
       
    60     IPTVLOGSTRING_LOW_LEVEL("CIptvEpgMsgHandler::CIptvEpgMsgHandler");
       
    61     }
       
    62 
       
    63 // -----------------------------------------------------------------------------
       
    64 // CIptvEpgMsgHandler::ConstructL
       
    65 // Symbian 2nd phase constructor can leave.
       
    66 // -----------------------------------------------------------------------------
       
    67 //
       
    68 void CIptvEpgMsgHandler::ConstructL()
       
    69     {
       
    70     IPTVLOGSTRING_LOW_LEVEL("CIptvEpgMsgHandler::ConstructL");
       
    71 
       
    72     iVodMsgQueue = CIptvEpgVodMsqQueue::NewL();
       
    73     }
       
    74 
       
    75 // -----------------------------------------------------------------------------
       
    76 // CIptvEpgMsgHandler::NewL
       
    77 // Two-phased constructor.
       
    78 // -----------------------------------------------------------------------------
       
    79 //
       
    80 CIptvEpgMsgHandler* CIptvEpgMsgHandler::NewL(CIptvServer& aServer)
       
    81     {
       
    82     IPTVLOGSTRING_LOW_LEVEL("CIptvEpgMsgHandler::NewL");
       
    83 
       
    84     CIptvEpgMsgHandler* self = new( ELeave ) CIptvEpgMsgHandler(aServer);   
       
    85     CleanupStack::PushL( self );
       
    86     self->ConstructL();
       
    87     CleanupStack::Pop(self);
       
    88     return self;
       
    89     }
       
    90 
       
    91 // -----------------------------------------------------------------------------
       
    92 // CIptvEpgMsgHandler::~CIptvEpgMsgHandler()
       
    93 // Destructor.
       
    94 // -----------------------------------------------------------------------------
       
    95 //   
       
    96 CIptvEpgMsgHandler::~CIptvEpgMsgHandler()
       
    97     {        
       
    98     IPTVLOGSTRING_LOW_LEVEL("CIptvEpgMsgHandler::~CIptvEpgMsgHandler");
       
    99         
       
   100     iCategoryBriefDetailsArray.ResetAndDestroy();
       
   101     iContentBriefDetailsArray.ResetAndDestroy();
       
   102     iMediaContentArray.ResetAndDestroy();        
       
   103     
       
   104     delete iContentFullDetails;
       
   105     delete iCategory;
       
   106     delete iVodMsgQueue;             
       
   107     delete iEpgSession;
       
   108     delete iEpgDatabase;
       
   109     }
       
   110 
       
   111 // ------------------------------------------------------------------
       
   112 // CIptvEpgMsgHandler::HandleEpgMsg
       
   113 // ------------------------------------------------------------------
       
   114 //
       
   115 void CIptvEpgMsgHandler::HandleEpgMsgL(const RMessage2& aMessage)
       
   116     {
       
   117     IPTVLOGSTRING_LOW_LEVEL("CIptvEpgMsgHandler::HandleEpgMsgL");
       
   118 
       
   119     switch ( aMessage.Function() )
       
   120         {
       
   121         case EIptvEngineVodContentUpdateEcg:
       
   122             {
       
   123             TInt err( KErrNotReady );
       
   124             if ( iEpgSession )
       
   125                 {
       
   126                 err = iEpgSession->UpdateEcg( ETrue );
       
   127                 }
       
   128             aMessage.Complete( err );                
       
   129             }
       
   130             break;
       
   131         case EIptvEngineVodContentCheckGroup:
       
   132             {
       
   133             TInt err( KErrNotReady );
       
   134             if ( iEpgSession )
       
   135                 {
       
   136                 err = iEpgSession->UpdateEcg( EFalse );
       
   137                 }
       
   138             aMessage.Complete( err );                
       
   139             }
       
   140             break;
       
   141         case EIptvEngineVodContentCancel:
       
   142             {
       
   143             delete iEpgSession;
       
   144             iEpgSession = NULL;
       
   145             iVodMsgQueue->CancelRequest();
       
   146             aMessage.Complete(KErrNone);
       
   147             }
       
   148             break;
       
   149         case EIptvEngineVodContentCancelUpdate:
       
   150             {
       
   151             if ( iEpgSession )
       
   152                 {
       
   153                 iEpgSession->VodPluginCancelled();
       
   154                 }
       
   155             iVodMsgQueue->CancelMsgQueue();
       
   156             aMessage.Complete(KErrNone);
       
   157             }
       
   158             break;
       
   159 
       
   160         case EIptvEngineVodContentRssSearch:
       
   161         	{
       
   162         	TInt err( KErrNotReady );
       
   163         	if( iEpgSession )
       
   164         		{
       
   165 	            TPckgBuf<TIptvRssSearchQuery> pckg;
       
   166 	            TRAP( err, aMessage.ReadL( 0, pckg ) );
       
   167 	            if( err == KErrNone )
       
   168 	            	{
       
   169 	        		err = iEpgSession->Search( pckg() );
       
   170 	            	}
       
   171         		}
       
   172     		aMessage.Complete( err );
       
   173         	}
       
   174         	break;
       
   175         case EIptvEngineVodContentRssSearchCancel:
       
   176         	{
       
   177         	TInt err( KErrNotReady );
       
   178         	if( iEpgSession )
       
   179         		{
       
   180         		err = iEpgSession->CancelSearch();
       
   181         		}
       
   182         	aMessage.Complete( err );
       
   183         	}
       
   184         	break;
       
   185         case EIptvEngineLiveTvUpdateEPGReq:
       
   186 			{
       
   187 			TInt err( KErrNotReady );
       
   188 			if ( iEpgSession )
       
   189         		{
       
   190         		err = iEpgSession->UpdateEcg( ETrue );
       
   191         		}
       
   192         	aMessage.Complete( err );
       
   193 			}
       
   194         	break;
       
   195 		case EIptvEngineLiveTvUpdateChannelReq:
       
   196             {
       
   197             TRAPD( err, HandleUpdateChannelOrderReqL( aMessage ) );
       
   198 			aMessage.Complete( err );	
       
   199 			break;
       
   200             }
       
   201         case EIptvEngineVodContentObserver:
       
   202             iVodMsgQueue->SetRequest(aMessage);
       
   203             break;
       
   204         case EIptvEngineVodContentServiceId: // fall through
       
   205         case EIptvEngineLiveTvContentServiceId:
       
   206             HandleServiceIdL(aMessage);            
       
   207             break;
       
   208         case EIptvEngineVodContentGetCAListSizeReq:
       
   209             HandleGetCAListSizeReqL(aMessage);
       
   210             break;
       
   211         case EIptvEngineVodContentGetCAListDataReq:
       
   212             HandleGetCAListDataReqL(aMessage);
       
   213             break;                
       
   214         case EIptvEngineVodContentSetLastPosition:
       
   215             SetLastPositionL(aMessage);
       
   216             break;
       
   217         case EIptvEngineVodContentSetMpxId:
       
   218             HandleSetMpxIdL(aMessage);
       
   219             break;  
       
   220         case EIptvEngineVodContentGetEcgCategoryListSizeReq:            
       
   221             HandleGetEcgCategoryListSizeReqL(aMessage);
       
   222             break;
       
   223         case EIptvEngineVodContentGetEcgCategoryListDataReq:
       
   224             HandleGetEcgCategoryListDataReqL(aMessage);
       
   225             break;
       
   226         case EIptvEngineVodContentGetCategoryDetailsSizeReq:
       
   227             HandleGetCategoryDetailsSizeReqL(aMessage);
       
   228             break;
       
   229         case EIptvEngineVodContentGetCategoryDetailsDataReq:
       
   230             HandleGetCategoryDetailsDataReqL(aMessage);
       
   231             break;
       
   232         case EIptvEngineVodContentGetParentCategoryReq:
       
   233             HandleGetParentCategoryReqL(aMessage);
       
   234             break;
       
   235         case EIptvEngineVodContentGetEcgListSizeReq:             
       
   236             HandleGetEcgListSizeReqL(aMessage);
       
   237             break;
       
   238         case EIptvEngineVodContentGetEcgListDataReq:
       
   239             HandleGetEcgListDataReqL(aMessage);
       
   240             break;
       
   241         case EIptvEngineVodContentGetEcgAllListSizeReq:
       
   242             HandleGetEcgAllListSizeReqL(aMessage);
       
   243             break;
       
   244         case EIptvEngineVodContentGetEcgAllListDataReq:
       
   245             HandleGetEcgAllListDataReqL(aMessage);
       
   246             break;
       
   247         case EIptvEngineVodContentGetContentDetailsSizeReq:            
       
   248             HandleGetContentDetailsSizeReqL(aMessage);
       
   249             break;
       
   250         case EIptvEngineVodContentGetContentDetailsDataReq:
       
   251             HandleGetContentDetailsDataReqL(aMessage);
       
   252             break;
       
   253         case EIptvEngineVodGetUpdateTime:
       
   254             HandleGetUpdateTimeL(aMessage);
       
   255             break;
       
   256         case EIptvEngineLiveTvSetIap: // fall through            
       
   257         case EIptvEngineVodContentSetIap:
       
   258             HandleSetIapL(aMessage);
       
   259             break;
       
   260         case EIptvEngineVodContentResetGlobalId:
       
   261             HandleResetGlobalIdL( aMessage );
       
   262             break;
       
   263         case EIptvEngineVodContentCheckUpdate:
       
   264             HandleContentCheckUpdateL( aMessage );
       
   265             break;
       
   266         default:
       
   267             break;
       
   268         }
       
   269     }
       
   270 
       
   271 // ------------------------------------------------------------------
       
   272 // CIptvEpgMsgHandler::HandleUpdateChannelOrderReqL
       
   273 // ------------------------------------------------------------------
       
   274 //
       
   275 void CIptvEpgMsgHandler::HandleUpdateChannelOrderReqL( const RMessage2& aMessage ) 
       
   276 	{
       
   277 	IPTVLOGSTRING_LOW_LEVEL("CIptvEpgMsgHandler::HandleUpdateChannelOrderReqL");
       
   278 	// aMessage contains service provider id, channel id 
       
   279 	// and order number
       
   280 	TUint32 serviceId( 0 );
       
   281 	TInt64 channelId( 0 );
       
   282 	TUint32 order( 0 );
       
   283 	
       
   284 	TBuf8<KIptvChannelOrderReqSize> data;        
       
   285     aMessage.ReadL( 0, data, 0 );   
       
   286     RDesReadStream stream;
       
   287 	CleanupClosePushL( stream );
       
   288     stream.Open( data );       
       
   289     serviceId = stream.ReadUint32L();
       
   290 	stream >> channelId;
       
   291 	order = stream.ReadUint32L();
       
   292     CleanupStack::PopAndDestroy( &stream ); // closes stream
       
   293                 
       
   294     if ( !iEpgDatabase ) 
       
   295 		{
       
   296 		// remove non-working code below?
       
   297 		RFs fs;
       
   298 		CleanupClosePushL( fs );
       
   299 	    User::LeaveIfError( fs.Connect() );
       
   300 	    TBuf<KIptvMaxPath> path;
       
   301 	    CIptvUtil::GetPathL( fs, EIptvPathEcg, path );
       
   302 	    CleanupStack::PopAndDestroy( &fs ); // closes fs
       
   303 
       
   304 	    path.Append( KLiveTvEPGDatabaseName );
       
   305 		iEpgDatabase = CIptvEpgDatabase::NewL( path );
       
   306 		}
       
   307 	iEpgDatabase->UpdateChannelOrderL( serviceId, channelId, order );	
       
   308 	}
       
   309 
       
   310 // ------------------------------------------------------------------
       
   311 // CIptvEpgMsgHandler::SendMessageToClientL
       
   312 // ------------------------------------------------------------------
       
   313 //
       
   314 void CIptvEpgMsgHandler::SendMessageToClientL(TInt aMsg, TInt aInfo)
       
   315     {
       
   316     IPTVLOGSTRING2_LOW_LEVEL("CIptvEpgMsgHandler::SendMessageToClientL %d", aMsg);
       
   317 
       
   318     // Service id = 0 because we dont have to bring this information
       
   319     // over IPC. Service ID is already on the client side.    
       
   320     iVodMsgQueue->SendMessageToClientL(aMsg, aInfo);
       
   321     }
       
   322 
       
   323 // -----------------------------------------------------------------------------
       
   324 // CIptvEpgMsgHandler::HandleGetEcgCategoryListSizeReqL()
       
   325 // 
       
   326 // -----------------------------------------------------------------------------
       
   327 //   
       
   328 void CIptvEpgMsgHandler::HandleGetEcgCategoryListSizeReqL(const RMessage2& aMessage)
       
   329     {    
       
   330     IPTVLOGSTRING_LOW_LEVEL("CIptvEpgMsgHandler::HandleGetEcgCategoryListSizeReqL");
       
   331 
       
   332     TBuf8<KIptvSizeRequestSize> data;        
       
   333     aMessage.ReadL(0, data, 0);       
       
   334     RDesReadStream stream;
       
   335     stream.Open(data);  
       
   336     CleanupClosePushL( stream );     
       
   337     TIptvCategoryId parentCategoryId = stream.ReadUint32L();     
       
   338     CleanupStack::PopAndDestroy( &stream );
       
   339         
       
   340     // Get Epg stuff from DB
       
   341     TInt error = KErrNotReady;
       
   342     if (iEpgSession)
       
   343         {    
       
   344         error = iEpgSession->GetVodClientImplL()->GetEcgCategoryListL(parentCategoryId, iCategoryBriefDetailsArray);
       
   345         if (error != KErrNone)
       
   346             {
       
   347             IPTVLOGSTRING2_LOW_LEVEL("CIptvEpgMsgHandler::HandleGetEcgCategoryListSizeReqL error %d", error);            
       
   348             }       
       
   349         }
       
   350     else
       
   351         {                        
       
   352         IPTVLOGSTRING_LOW_LEVEL("CIptvEpgMsgHandler::HandleGetEcgCategoryListSizeReqL Epg session is NULL");        
       
   353         }
       
   354    
       
   355     TInt count = iCategoryBriefDetailsArray.Count();
       
   356     IPTVLOGSTRING2_LOW_LEVEL("Item count = %d", count);
       
   357     
       
   358     // count in the beginning
       
   359     TUint32 dataSize = KIptvFour;
       
   360     for (TInt i = 0; i < count; i++)
       
   361         {                        
       
   362         dataSize += iCategoryBriefDetailsArray[i]->CountExternalizeSize();
       
   363         }
       
   364 
       
   365     IPTVLOGSTRING2_LOW_LEVEL("CIptvEpgMsgHandler::Category brief details array data size = %d", dataSize);
       
   366     iDataSize = dataSize;
       
   367 
       
   368     // Send data size to client
       
   369     data.FillZ();
       
   370     RDesWriteStream writeStream;
       
   371     writeStream.Open(data);
       
   372     CleanupClosePushL( writeStream );
       
   373     writeStream.WriteUint32L(dataSize);
       
   374     CleanupStack::PopAndDestroy( &writeStream );
       
   375 
       
   376 	aMessage.WriteL(0, data, 0);
       
   377     aMessage.Complete(error);    
       
   378     }
       
   379 
       
   380 // -----------------------------------------------------------------------------
       
   381 // CIptvEpgMsgHandler::HandleGetEcgCategoryListDataReqL()
       
   382 // 
       
   383 // -----------------------------------------------------------------------------
       
   384 //    
       
   385 void CIptvEpgMsgHandler::HandleGetEcgCategoryListDataReqL(const RMessage2& aMessage)
       
   386     {   
       
   387     IPTVLOGSTRING_LOW_LEVEL("CIptvEpgMsgHandler::HandleGetEcgCategoryListDataReqL");
       
   388           
       
   389     HBufC8* data = HBufC8::NewL(iDataSize);
       
   390     CleanupStack::PushL(data);
       
   391     TPtr8 dataPtr(data->Des());
       
   392     
       
   393     RDesWriteStream stream;
       
   394     stream.Open(dataPtr);
       
   395     CleanupClosePushL( stream );
       
   396     TUint32 count = iCategoryBriefDetailsArray.Count();
       
   397     stream.WriteUint32L(count);
       
   398     for (TInt i = 0; i < count; i++)
       
   399         {
       
   400         iCategoryBriefDetailsArray[i]->ExternalizeL(stream);        
       
   401         }
       
   402     CleanupStack::PopAndDestroy( &stream );
       
   403     aMessage.WriteL(0, dataPtr, 0);
       
   404     CleanupStack::PopAndDestroy(data);
       
   405     iCategoryBriefDetailsArray.ResetAndDestroy();
       
   406     aMessage.Complete(KErrNone);    
       
   407     }
       
   408 
       
   409 // -----------------------------------------------------------------------------
       
   410 // CIptvEpgMsgHandler::HandleGetCategoryDetailsSizeReqL()
       
   411 // 
       
   412 // -----------------------------------------------------------------------------
       
   413 //    
       
   414 void CIptvEpgMsgHandler::HandleGetCategoryDetailsSizeReqL(const RMessage2& aMessage)
       
   415     {
       
   416     IPTVLOGSTRING_LOW_LEVEL("CIptvEpgMsgHandler::HandleGetCategoryDetailsSizeReqL");
       
   417 
       
   418     TBuf8<KIptvSizeRequestSize> data;        
       
   419     aMessage.ReadL(0, data, 0);       
       
   420     RDesReadStream stream;
       
   421     stream.Open(data); 
       
   422     CleanupClosePushL( stream );      
       
   423     TIptvCategoryId categoryId = stream.ReadUint32L();     
       
   424     CleanupStack::PopAndDestroy( &stream );
       
   425     
       
   426     // Get Epg stuff from DB        
       
   427     delete iCategory;
       
   428     iCategory = NULL;        
       
   429     iCategory = CIptvVodContentCategoryBriefDetails::NewL();
       
   430     
       
   431     TInt error = KErrNotReady;
       
   432     if (iEpgSession)
       
   433         {
       
   434         error = iEpgSession->GetVodClientImplL()->GetCategoryDetailsL(categoryId, *iCategory);
       
   435         if (error != KErrNone)
       
   436             {                
       
   437             IPTVLOGSTRING2_LOW_LEVEL("CIptvEpgMsgHandler::HandleGetCategoryDetailsSizeReqL error %d", error);            
       
   438             }
       
   439         }
       
   440     else
       
   441         {
       
   442         IPTVLOGSTRING_LOW_LEVEL("CIptvEpgMsgHandler::HandleGetCategoryDetailsSizeReqL Epg session is NULL");        
       
   443         }       
       
   444 
       
   445     TUint32 dataSize = 0;
       
   446     if (iCategory)
       
   447         {
       
   448         dataSize = iCategory->CountExternalizeSize();
       
   449         IPTVLOGSTRING2_LOW_LEVEL("CIptvEpgMsgHandler::Category full details data size = %d", dataSize);
       
   450         iDataSize = dataSize;
       
   451         }
       
   452     
       
   453     // Send data size to client
       
   454     data.FillZ();
       
   455     RDesWriteStream writeStream;
       
   456     writeStream.Open(data);
       
   457     CleanupClosePushL( writeStream );
       
   458     writeStream.WriteUint32L(dataSize);
       
   459     CleanupStack::PopAndDestroy( &writeStream );
       
   460 
       
   461 	aMessage.WriteL(0, data, 0);    
       
   462     aMessage.Complete(error);                       
       
   463     }
       
   464 
       
   465 // -----------------------------------------------------------------------------
       
   466 // CIptvEpgMsgHandler::HandleGetCategoryDetailsDataReqL()
       
   467 // 
       
   468 // -----------------------------------------------------------------------------
       
   469 //    
       
   470 void CIptvEpgMsgHandler::HandleGetCategoryDetailsDataReqL(const RMessage2& aMessage)
       
   471     {
       
   472     IPTVLOGSTRING_LOW_LEVEL("CIptvEpgMsgHandler::HandleGetCategoryDetailsDataReqL");
       
   473     
       
   474     HBufC8* data = HBufC8::NewL(iDataSize);
       
   475     CleanupStack::PushL(data);
       
   476     TPtr8 dataPtr(data->Des());
       
   477     
       
   478     RDesWriteStream stream;
       
   479     stream.Open(dataPtr);
       
   480     CleanupClosePushL( stream );
       
   481     iCategory->ExternalizeL(stream);
       
   482     CleanupStack::PopAndDestroy( &stream );   
       
   483         
       
   484     aMessage.WriteL(0, dataPtr, 0);
       
   485     CleanupStack::PopAndDestroy(data);
       
   486     delete iCategory;
       
   487     iCategory = NULL;      
       
   488     aMessage.Complete(KErrNone);    
       
   489     }
       
   490 
       
   491 // -----------------------------------------------------------------------------
       
   492 // CIptvEpgMsgHandler::HandleGetParentCategoryReqL()
       
   493 // 
       
   494 // -----------------------------------------------------------------------------
       
   495 //    
       
   496 void CIptvEpgMsgHandler::HandleGetParentCategoryReqL(const RMessage2& aMessage)
       
   497     {
       
   498     IPTVLOGSTRING_LOW_LEVEL("CIptvEpgMsgHandler::HandleGetParentCategoryReqL");
       
   499     
       
   500     TBuf8<KIptvSizeRequestSize> data;        
       
   501     aMessage.ReadL(0, data, 0);
       
   502     RDesReadStream stream;
       
   503     stream.Open(data);       
       
   504     CleanupClosePushL( stream );
       
   505     TIptvCategoryId categoryId = stream.ReadUint32L();     
       
   506     CleanupStack::PopAndDestroy( &stream );
       
   507     IPTVLOGSTRING2_LOW_LEVEL("HandleGetParentCategoryReqL category = %d", categoryId);        
       
   508 
       
   509     // Get Epg stuff from DB    
       
   510     TIptvCategoryId parent = 0;
       
   511     TInt error = KErrNotReady;
       
   512     if (iEpgSession)
       
   513         {
       
   514         error = iEpgSession->GetVodClientImplL()->GetParentCategoryL(categoryId, parent);
       
   515         if (error != KErrNone)
       
   516             {                
       
   517             IPTVLOGSTRING2_LOW_LEVEL("CIptvEpgMsgHandler::HandleGetParentCategoryReqL error %d", error);            
       
   518             }
       
   519         }
       
   520     
       
   521     // Send parent category to client
       
   522     data.FillZ();
       
   523     RDesWriteStream writeStream;
       
   524     writeStream.Open(data);
       
   525     CleanupClosePushL( writeStream );
       
   526     writeStream.WriteUint32L(parent);
       
   527     CleanupStack::PopAndDestroy( &writeStream );
       
   528 
       
   529 	aMessage.WriteL(0, data, 0);
       
   530     aMessage.Complete(error);
       
   531     }
       
   532 
       
   533 // -----------------------------------------------------------------------------
       
   534 // CIptvEpgMsgHandler::HandleGetEcgListSizeReqL()
       
   535 // 
       
   536 // -----------------------------------------------------------------------------
       
   537 //    
       
   538 void CIptvEpgMsgHandler::HandleGetEcgListSizeReqL(const RMessage2& aMessage)
       
   539     {
       
   540     IPTVLOGSTRING_LOW_LEVEL("CIptvEpgMsgHandler::HandleGetEcgListSizeReqL");
       
   541 
       
   542     TInt dataSize = aMessage.GetDesLengthL(0);
       
   543     IPTVLOGSTRING2_LOW_LEVEL("CIptvEpgMsgHandler::HandleGetEcgListSizeReqL:: data size = %d", dataSize);
       
   544 
       
   545     HBufC8* data = HBufC8::NewL(dataSize);
       
   546     CleanupStack::PushL(data);
       
   547     TPtr8 dataPtr(data->Des());
       
   548     aMessage.ReadL(0, dataPtr, 0);
       
   549             
       
   550     RDesReadStream stream;
       
   551     stream.Open(dataPtr);    
       
   552     CleanupClosePushL( stream );
       
   553     TUint32 categoryKey = stream.ReadUint32L();    
       
   554     TUint32 from = stream.ReadUint32L();
       
   555     TUint32 amount = stream.ReadUint32L();
       
   556     TBuf<KIptvEpgContentNameMaxLength> search;
       
   557     CIptvUtil::ReadDesFromStreamL(search, stream);
       
   558     CleanupStack::PopAndDestroy( &stream );
       
   559 
       
   560     // Get Epg stuff from DB 
       
   561     TUint32 totalAmount = 0;
       
   562     TInt error = KErrNotReady;
       
   563     if (iEpgSession)
       
   564         {
       
   565         error = iEpgSession->GetVodClientImplL()->GetEcgListL(categoryKey, search, from, amount, totalAmount, iContentBriefDetailsArray);    
       
   566         if (error != KErrNone)
       
   567             {                
       
   568             IPTVLOGSTRING2_LOW_LEVEL("CIptvEpgMsgHandler::HandleGetEcgListSizeReqL error %d", error);
       
   569             }
       
   570         }
       
   571     
       
   572     iTotalAmount = totalAmount;
       
   573     TInt count = iContentBriefDetailsArray.Count();
       
   574     IPTVLOGSTRING2_LOW_LEVEL("Item count = %d", count);
       
   575     
       
   576     // count + totalAmount
       
   577     dataSize = KIptvFour + KIptvFour;
       
   578     for (TInt i = 0; i < count; i++)
       
   579         {                        
       
   580         dataSize += iContentBriefDetailsArray[i]->CountExternalizeSize();
       
   581         }
       
   582 
       
   583     IPTVLOGSTRING2_LOW_LEVEL("CIptvEpgMsgHandler::Content brief details array data size = %d", dataSize);
       
   584     iDataSize = dataSize;
       
   585 
       
   586     // Send data size to client
       
   587     dataPtr.FillZ();
       
   588     RDesWriteStream writeStream;
       
   589     writeStream.Open(dataPtr);
       
   590     CleanupClosePushL( writeStream );
       
   591     writeStream.WriteUint32L(dataSize);
       
   592     CleanupStack::PopAndDestroy( &writeStream );
       
   593 
       
   594 	aMessage.WriteL(0, dataPtr, 0);
       
   595     CleanupStack::PopAndDestroy(data);  
       
   596     aMessage.Complete(error);
       
   597     }
       
   598 
       
   599 // -----------------------------------------------------------------------------
       
   600 // CIptvEpgMsgHandler::HandleGetEcgListSizeReqL()
       
   601 // 
       
   602 // -----------------------------------------------------------------------------
       
   603 //    
       
   604 void CIptvEpgMsgHandler::HandleGetEcgListDataReqL(const RMessage2& aMessage)
       
   605     {
       
   606     IPTVLOGSTRING_LOW_LEVEL("CIptvEpgMsgHandler::HandleGetEcgListDataReqL");
       
   607 
       
   608     HBufC8* data = HBufC8::NewL(iDataSize);
       
   609     CleanupStack::PushL(data);
       
   610     TPtr8 dataPtr(data->Des());
       
   611     
       
   612     RDesWriteStream stream;
       
   613     stream.Open(dataPtr);
       
   614     CleanupClosePushL( stream );
       
   615     TUint32 count = iContentBriefDetailsArray.Count();
       
   616     stream.WriteUint32L(count);
       
   617     stream.WriteUint32L(iTotalAmount);
       
   618     for(TInt i = 0; i < count; i++)
       
   619         {
       
   620         iContentBriefDetailsArray[i]->ExternalizeL(stream);
       
   621         }
       
   622     CleanupStack::PopAndDestroy( &stream );
       
   623     aMessage.WriteL(0, dataPtr, 0);
       
   624     iTotalAmount = 0;
       
   625     CleanupStack::PopAndDestroy(data);
       
   626     iContentBriefDetailsArray.ResetAndDestroy();    
       
   627     aMessage.Complete(KErrNone);    
       
   628     }
       
   629 
       
   630 // -----------------------------------------------------------------------------
       
   631 // CIptvEpgMsgHandler::HandleGetEcgAllListSizeReqL()
       
   632 // 
       
   633 // -----------------------------------------------------------------------------
       
   634 //    
       
   635 void CIptvEpgMsgHandler::HandleGetEcgAllListSizeReqL(const RMessage2& aMessage)
       
   636     {
       
   637     IPTVLOGSTRING_LOW_LEVEL("CIptvEpgMsgHandler::HandleGetEcgAllListSizeReqL");
       
   638 
       
   639     TInt dataSize = aMessage.GetDesLengthL(0);
       
   640     IPTVLOGSTRING2_LOW_LEVEL("CIptvEpgMsgHandler::HandleGetEcgAllListSizeReqL:: data size = %d", dataSize);
       
   641 
       
   642     HBufC8* data = HBufC8::NewL(dataSize);
       
   643     CleanupStack::PushL(data);
       
   644     TPtr8 dataPtr(data->Des());
       
   645     aMessage.ReadL(0, dataPtr, 0);
       
   646             
       
   647     RDesReadStream stream;
       
   648     stream.Open(dataPtr);        
       
   649     CleanupClosePushL( stream );
       
   650     TUint32 from = stream.ReadUint32L();
       
   651     TUint32 amount = stream.ReadUint32L();
       
   652     TBuf<KIptvEpgContentNameMaxLength> search;
       
   653     CIptvUtil::ReadDesFromStreamL(search, stream);    
       
   654     CleanupStack::PopAndDestroy( &stream );
       
   655     
       
   656     // Get Epg stuff from DB 
       
   657     TUint32 totalAmount = 0;
       
   658     TInt error = KErrNotReady;
       
   659     if (iEpgSession)
       
   660         {
       
   661         error = iEpgSession->GetVodClientImplL()->GetEcgAllListL(search, from, amount, totalAmount, iContentBriefDetailsArray);
       
   662         if (error != KErrNone)
       
   663             {                
       
   664             IPTVLOGSTRING2_LOW_LEVEL("CIptvEpgMsgHandler::HandleGetEcgAllListSizeReqL error %d", error);
       
   665             }
       
   666         }
       
   667     
       
   668     iTotalAmount = totalAmount;
       
   669     TInt count = iContentBriefDetailsArray.Count();
       
   670     IPTVLOGSTRING2_LOW_LEVEL("Item count = %d", count);
       
   671         
       
   672     // count + totalAmount
       
   673     dataSize = KIptvFour + KIptvFour;
       
   674     for (TInt i = 0; i < count; i++)
       
   675         {                        
       
   676         dataSize += iContentBriefDetailsArray[i]->CountExternalizeSize();
       
   677         }
       
   678 
       
   679     IPTVLOGSTRING2_LOW_LEVEL("Content brief details array data size = %d", dataSize);
       
   680     iDataSize = dataSize;
       
   681 
       
   682     // Send data size to client
       
   683     dataPtr.FillZ();
       
   684     RDesWriteStream writeStream;
       
   685     writeStream.Open(dataPtr);
       
   686     CleanupClosePushL( writeStream );
       
   687     writeStream.WriteUint32L(dataSize);
       
   688     CleanupStack::PopAndDestroy( &writeStream );
       
   689 
       
   690 	aMessage.WriteL(0, dataPtr, 0);
       
   691     CleanupStack::PopAndDestroy(data);  
       
   692     aMessage.Complete(error);
       
   693     }
       
   694 
       
   695 // -----------------------------------------------------------------------------
       
   696 // CIptvEpgMsgHandler::HandleEcgAllListDataReqL()
       
   697 // 
       
   698 // -----------------------------------------------------------------------------
       
   699 //    
       
   700 void CIptvEpgMsgHandler::HandleGetEcgAllListDataReqL(const RMessage2& aMessage)
       
   701     {    
       
   702     IPTVLOGSTRING_LOW_LEVEL("CIptvEpgMsgHandler::HandleGetEcgAllListDataReqL");
       
   703 
       
   704     HBufC8* data = HBufC8::NewL(iDataSize);
       
   705     CleanupStack::PushL(data);
       
   706     TPtr8 dataPtr(data->Des());
       
   707     
       
   708     RDesWriteStream stream;
       
   709     stream.Open(dataPtr);
       
   710     CleanupClosePushL( stream );
       
   711     TUint32 count = iContentBriefDetailsArray.Count();
       
   712     stream.WriteUint32L(count);
       
   713     stream.WriteUint32L(iTotalAmount);
       
   714     for(TInt i = 0; i < count; i++)
       
   715         {
       
   716         iContentBriefDetailsArray[i]->ExternalizeL(stream);
       
   717         }
       
   718     CleanupStack::PopAndDestroy( &stream );
       
   719     aMessage.WriteL(0, dataPtr, 0);
       
   720     iTotalAmount = 0;
       
   721     CleanupStack::PopAndDestroy(data);
       
   722     iContentBriefDetailsArray.ResetAndDestroy();    
       
   723     aMessage.Complete(KErrNone);    
       
   724     }
       
   725 
       
   726 // -----------------------------------------------------------------------------
       
   727 // CIptvEpgMsgHandler::HandleGetContentDetailsSizeReqL()
       
   728 // 
       
   729 // -----------------------------------------------------------------------------
       
   730 //    
       
   731 void CIptvEpgMsgHandler::HandleGetContentDetailsSizeReqL(const RMessage2& aMessage)
       
   732     {
       
   733     IPTVLOGSTRING_LOW_LEVEL("CIptvEpgMsgHandler::HandleGetContentDetailsSizeReqL");
       
   734 
       
   735     TBuf8<KIptvSizeRequestSize> data;        
       
   736     aMessage.ReadL(0, data, 0);       
       
   737     RDesReadStream stream;
       
   738     stream.Open(data);       
       
   739     CleanupClosePushL( stream );
       
   740     TIptvContentId contentId = stream.ReadUint32L();     
       
   741     CleanupStack::PopAndDestroy( &stream );
       
   742     
       
   743     // Get Epg stuff from DB        
       
   744     delete iContentFullDetails;
       
   745     iContentFullDetails = NULL;        
       
   746     iContentFullDetails = CIptvVodContentContentFullDetails::NewL();
       
   747         
       
   748     TInt error = KErrNotReady;
       
   749     if (iEpgSession)
       
   750         {
       
   751         error = iEpgSession->GetVodClientImplL()->GetContentDetailsL(contentId, *iContentFullDetails);
       
   752         if (error != KErrNone)
       
   753             {                    
       
   754             IPTVLOGSTRING2_LOW_LEVEL("CIptvEpgMsgHandler::HandleGetContentDetailsSizeReqL error %d", error);
       
   755             }
       
   756         }
       
   757     
       
   758     TUint32 dataSize = 0;
       
   759     if (iContentFullDetails)
       
   760         {
       
   761         dataSize = iContentFullDetails->CountExternalizeSize();
       
   762         IPTVLOGSTRING2_LOW_LEVEL("Content full details data size = %d", dataSize);
       
   763         iDataSize = dataSize;
       
   764         }
       
   765     
       
   766     // Send data size to client
       
   767     data.FillZ();
       
   768     RDesWriteStream writeStream;
       
   769     writeStream.Open(data);
       
   770     CleanupClosePushL( writeStream );
       
   771     writeStream.WriteUint32L(dataSize);
       
   772     CleanupStack::PopAndDestroy( &writeStream );
       
   773 
       
   774 	aMessage.WriteL(0, data, 0);   
       
   775     aMessage.Complete(error);                       
       
   776     }
       
   777 
       
   778 // -----------------------------------------------------------------------------
       
   779 // CIptvEpgMsgHandler::HandleGetContentDetailsDataReqL()
       
   780 // 
       
   781 // -----------------------------------------------------------------------------
       
   782 //
       
   783 void CIptvEpgMsgHandler::HandleGetContentDetailsDataReqL(const RMessage2& aMessage)
       
   784     {
       
   785     IPTVLOGSTRING_LOW_LEVEL("CIptvEpgMsgHandler::HandleGetContentDetailsDataReqL");
       
   786     
       
   787     HBufC8* data = HBufC8::NewL(iDataSize);
       
   788     CleanupStack::PushL(data);
       
   789     TPtr8 dataPtr(data->Des());
       
   790     
       
   791     RDesWriteStream stream;
       
   792     stream.Open(dataPtr);
       
   793     CleanupClosePushL( stream );
       
   794     iContentFullDetails->ExternalizeL(stream);
       
   795     CleanupStack::PopAndDestroy( &stream );   
       
   796         
       
   797     aMessage.WriteL(0, dataPtr, 0);
       
   798     CleanupStack::PopAndDestroy(data);
       
   799     delete iContentFullDetails;
       
   800     iContentFullDetails = NULL;      
       
   801     aMessage.Complete(KErrNone);    
       
   802     }
       
   803 
       
   804 // -----------------------------------------------------------------------------
       
   805 // CIptvEpgMsgHandler::HandleServiceId
       
   806 // Get service ID from client and get CIptvEpgManagerImpl pointer from server.
       
   807 // -----------------------------------------------------------------------------
       
   808 //   
       
   809 void CIptvEpgMsgHandler::HandleServiceIdL(const RMessage2& aMessage)
       
   810     {
       
   811     IPTVLOGSTRING_LOW_LEVEL("CIptvEpgMsgHandler::HandleServiceIdL");
       
   812 
       
   813     TBuf8<KIptvSizeRequestSize> data;
       
   814     aMessage.ReadL( 0, data, 0);
       
   815     RDesReadStream stream;
       
   816     CleanupClosePushL( stream );
       
   817     stream.Open( data );       
       
   818     iServiceId = stream.ReadUint32L();
       
   819     IPTVLOGSTRING2_LOW_LEVEL("Service ID = %d", iServiceId);
       
   820     CleanupStack::PopAndDestroy( &stream );
       
   821                 
       
   822     TInt error( KErrNone );
       
   823     CIptvEpgManagerImpl& epgManager = iServer.GetEpgManager();
       
   824     delete iEpgSession;
       
   825     iEpgSession = NULL;
       
   826     iEpgSession = epgManager.CreateSessionL( iServiceId, iVodMsgQueue, error );
       
   827     if ( iIapId > 0 && iEpgSession )
       
   828         {
       
   829         // IAP id has been set previously, Set it to the new EPG session also
       
   830         iEpgSession->SetIapL( iIapId );    
       
   831         }
       
   832     aMessage.Complete( error );    
       
   833     }
       
   834 
       
   835 // -----------------------------------------------------------------------------
       
   836 // CIptvEpgMsgHandler::HandleGetUpdateTimeL
       
   837 // 
       
   838 // -----------------------------------------------------------------------------
       
   839 //   
       
   840 void CIptvEpgMsgHandler::HandleGetUpdateTimeL(const RMessage2& aMessage)
       
   841     {
       
   842     IPTVLOGSTRING_LOW_LEVEL("CIptvEpgMsgHandler::HandleGetUpdateTimeL");
       
   843 
       
   844     TTime updateTime;
       
   845     TInt error( KErrNotReady );
       
   846     if (iEpgSession)
       
   847         {
       
   848         error = iEpgSession->GetVodClientImplL()->GetUpdateTimeL(updateTime);
       
   849         if (error != KErrNone)
       
   850             {                    
       
   851             IPTVLOGSTRING2_LOW_LEVEL("CIptvEpgMsgHandler::HandleGetUpdateTimeL error %d", error);
       
   852             }
       
   853         }
       
   854     
       
   855     TInt64 time = updateTime.Int64();    
       
   856     TUint32 lower = (TUint32) (0x00000000FFFFFFFF) & time;
       
   857     TUint32 upper = (TUint32) (0x00000000FFFFFFFF) & (time >> 32);
       
   858 
       
   859     HBufC8* data = HBufC8::NewL(KIptvVodGetUpdateTimeRequestSize);
       
   860     CleanupStack::PushL(data);
       
   861     TPtr8 dataPtr(data->Des());
       
   862     
       
   863     RDesWriteStream stream;
       
   864     stream.Open(dataPtr);    
       
   865     CleanupClosePushL( stream );
       
   866     stream.WriteUint32L(lower);
       
   867     stream.WriteUint32L(upper);    
       
   868     CleanupStack::PopAndDestroy( &stream );
       
   869     aMessage.WriteL(0, dataPtr, 0);    
       
   870     CleanupStack::PopAndDestroy(data);    
       
   871     aMessage.Complete(error);    
       
   872     }
       
   873 
       
   874 // -----------------------------------------------------------------------------
       
   875 // CIptvEpgMsgHandler::HandleSetIapL
       
   876 // 
       
   877 // -----------------------------------------------------------------------------
       
   878 //   
       
   879 void CIptvEpgMsgHandler::HandleSetIapL(const RMessage2& aMessage)
       
   880     {
       
   881     IPTVLOGSTRING_LOW_LEVEL("CIptvEpgMsgHandler::HandleSetIapL");
       
   882     if ( !iEpgSession )
       
   883         {
       
   884         IPTVLOGSTRING_LOW_LEVEL( "CIptvEpgMsgHandler::HandleSetIapL: iEpgSession has not been created, complete aMessage with KErrNotReady" );
       
   885         aMessage.Complete( KErrNotReady );
       
   886         return;
       
   887         }
       
   888 
       
   889     TBuf8<KIptvSizeRequestSize> data;
       
   890     aMessage.ReadL(0, data, 0);       
       
   891     RDesReadStream stream;
       
   892     stream.Open(data);       
       
   893 	CleanupClosePushL( stream );    
       
   894     iIapId = stream.ReadUint32L();    
       
   895 	CleanupStack::PopAndDestroy( &stream ); // closes stream	
       
   896     iEpgSession->SetIapL( iIapId );
       
   897                     
       
   898     aMessage.Complete( KErrNone );  
       
   899     }
       
   900 
       
   901 // -----------------------------------------------------------------------------
       
   902 // CIptvEpgMsgHandler::HandleGetCAListSizeReqL
       
   903 // 
       
   904 // -----------------------------------------------------------------------------
       
   905 //   
       
   906 void CIptvEpgMsgHandler::HandleGetCAListSizeReqL(const RMessage2& aMessage)
       
   907     {
       
   908     IPTVLOGSTRING_LOW_LEVEL("CIptvEpgMsgHandler::HandleGetCAListSizeReqL");
       
   909 
       
   910     TBuf8<KIptvSizeRequestSize> data;        
       
   911     aMessage.ReadL(0, data, 0);       
       
   912     RDesReadStream stream;
       
   913     stream.Open(data);       
       
   914     CleanupClosePushL( stream );
       
   915     TUint32 contentId = stream.ReadUint32L();     
       
   916     CleanupStack::PopAndDestroy( &stream );
       
   917         
       
   918     // Get Epg stuff from DB
       
   919     TInt error = KErrNotReady;
       
   920     if (iEpgSession)
       
   921         {            
       
   922         error = iEpgSession->GetVodClientImplL()->GetContentAccessListL(contentId, iMediaContentArray);
       
   923         if (error != KErrNone)
       
   924             {
       
   925             IPTVLOGSTRING2_LOW_LEVEL("CIptvEpgMsgHandler::HandleGetCAListSizeReqL error %d", error);            
       
   926             }       
       
   927         }
       
   928     else
       
   929         {                        
       
   930         IPTVLOGSTRING_LOW_LEVEL("CIptvEpgMsgHandler::HandleGetCAListSizeReqL Epg session is NULL");        
       
   931         }
       
   932    
       
   933     TInt count = iMediaContentArray.Count();
       
   934         
       
   935     // count in the beginning
       
   936     TUint32 dataSize = KIptvFour;
       
   937     for (TInt i = 0; i < count; i++)
       
   938         {                        
       
   939         dataSize += iMediaContentArray[i]->CountExternalizeSize();
       
   940         }
       
   941 
       
   942     IPTVLOGSTRING2_LOW_LEVEL("CIptvEpgMsgHandler::Media content array data size = %d", dataSize);
       
   943     iDataSize = dataSize;
       
   944 
       
   945     // Send data size to client
       
   946     data.FillZ();
       
   947     RDesWriteStream writeStream;
       
   948     writeStream.Open(data);
       
   949     CleanupClosePushL( writeStream );
       
   950     writeStream.WriteUint32L(dataSize);
       
   951     CleanupStack::PopAndDestroy( &writeStream );
       
   952 
       
   953 	aMessage.WriteL(0, data, 0);
       
   954     aMessage.Complete(error);    
       
   955     }
       
   956 
       
   957 // -----------------------------------------------------------------------------
       
   958 // CIptvEpgMsgHandler::HandleGetCAListDataReqL
       
   959 // 
       
   960 // -----------------------------------------------------------------------------
       
   961 //   
       
   962 void CIptvEpgMsgHandler::HandleGetCAListDataReqL(const RMessage2& aMessage)
       
   963     {
       
   964     IPTVLOGSTRING_LOW_LEVEL("CIptvEpgMsgHandler::HandleGetCAListDataReqL");
       
   965 
       
   966     HBufC8* data = HBufC8::NewL(iDataSize);
       
   967     CleanupStack::PushL(data);
       
   968     TPtr8 dataPtr(data->Des());
       
   969     
       
   970     RDesWriteStream stream;
       
   971     stream.Open(dataPtr);
       
   972     CleanupClosePushL( stream );
       
   973     TUint32 count = iMediaContentArray.Count();
       
   974     stream.WriteUint32L(count);    
       
   975     for (TInt i = 0; i < count; i++)
       
   976         {
       
   977         iMediaContentArray[i]->ExternalizeL(stream);
       
   978         }
       
   979     CleanupStack::PopAndDestroy( &stream );
       
   980     aMessage.WriteL(0, dataPtr, 0);    
       
   981     CleanupStack::PopAndDestroy(data);
       
   982     iMediaContentArray.ResetAndDestroy();    
       
   983     aMessage.Complete(KErrNone);    
       
   984     }
       
   985 
       
   986 // ---------------------------------------------------------------------------
       
   987 // Handle Reset Global Id request.
       
   988 // ---------------------------------------------------------------------------
       
   989 //
       
   990 void CIptvEpgMsgHandler::HandleResetGlobalIdL(
       
   991     const RMessage2& aMessage )
       
   992     {
       
   993     IPTVLOGSTRING_LOW_LEVEL(
       
   994         "My Videos Mgr ## CIptvEpgMsgHandler::HandleResetGlobalIdL -- Enter" );
       
   995 
       
   996     // aMessage includes: CIptvMyVideosGlobalFileId, TUint32
       
   997 
       
   998     TInt dataSize = aMessage.GetDesLengthL( 0 );
       
   999     HBufC8* data = HBufC8::NewLC( dataSize );
       
  1000     TPtr8 dataPtr( data->Des() );
       
  1001     RDesReadStream stream;
       
  1002     CIptvMyVideosGlobalFileId* fileId = CIptvMyVideosGlobalFileId::NewLC();
       
  1003     TUint32 serviceId( 0 );
       
  1004 
       
  1005     aMessage.ReadL( 0, dataPtr, 0 );
       
  1006     stream.Open( dataPtr );
       
  1007     CleanupClosePushL( stream );
       
  1008     fileId->InternalizeL( stream );
       
  1009     serviceId = stream.ReadUint32L();
       
  1010     CleanupStack::PopAndDestroy( &stream );
       
  1011 
       
  1012     // CreateSessionL leaves if service does not exist.
       
  1013     CIptvEpgManagerImpl& epgManager = iServer.GetEpgManager();
       
  1014     TInt temp = KErrNone;
       
  1015     CIptvEpgSession* epgSession = epgManager.CreateSessionL(
       
  1016         serviceId,
       
  1017         NULL,
       
  1018         temp,
       
  1019         EFalse );
       
  1020 
       
  1021     CleanupStack::PushL( epgSession );
       
  1022     epgSession->ResetGlobalId( *fileId );
       
  1023     CleanupStack::PopAndDestroy( epgSession );
       
  1024 
       
  1025     CleanupStack::PopAndDestroy( fileId );
       
  1026     CleanupStack::PopAndDestroy( data );
       
  1027     aMessage.Complete( KErrNone );
       
  1028 
       
  1029     IPTVLOGSTRING_LOW_LEVEL(
       
  1030         "My Videos Mgr ## CIptvEpgMsgHandler::HandleEnsureFreeSpaceReqL -- Exit" );
       
  1031     }
       
  1032 
       
  1033 // -----------------------------------------------------------------------------
       
  1034 // CIptvEpgMsgHandler::SetLastPositionL
       
  1035 // 
       
  1036 // -----------------------------------------------------------------------------
       
  1037 //   
       
  1038 void CIptvEpgMsgHandler::SetLastPositionL(const RMessage2& aMessage)
       
  1039     {
       
  1040     IPTVLOGSTRING_LOW_LEVEL("CIptvEpgMsgHandler::SetLastPositionL");
       
  1041 
       
  1042     TBuf8<KIptvVodSendLastPositionSize> data;        
       
  1043     aMessage.ReadL(0, data, 0);       
       
  1044     RDesReadStream stream;
       
  1045     stream.Open(data);       
       
  1046     CleanupClosePushL( stream );
       
  1047     TUint32 id = stream.ReadUint32L();
       
  1048     TUint32 index = stream.ReadUint32L();
       
  1049     TUint32 position = stream.ReadUint32L();
       
  1050     CleanupStack::PopAndDestroy( &stream );
       
  1051     TInt error( KErrNotReady );
       
  1052     if ( iEpgSession )
       
  1053         {
       
  1054         error = iEpgSession->GetVodClientImplL()->SetLastPositionL(id, index, position);    
       
  1055         }
       
  1056     aMessage.Complete(error);    
       
  1057     }
       
  1058 
       
  1059 // -----------------------------------------------------------------------------
       
  1060 // CIptvEpgMsgHandler::HandleSetMpxIdL
       
  1061 // 
       
  1062 // -----------------------------------------------------------------------------
       
  1063 //   
       
  1064 void CIptvEpgMsgHandler::HandleSetMpxIdL( const RMessage2& aMessage )
       
  1065     {
       
  1066     IPTVLOGSTRING_LOW_LEVEL("CIptvEpgMsgHandler::HandleSetMpxIdL");
       
  1067 
       
  1068     TBuf8<KIptvVodSendMpxIdSize> data;        
       
  1069     aMessage.ReadL( 0, data, 0 );       
       
  1070     RDesReadStream stream;
       
  1071     stream.Open( data );       
       
  1072     CleanupClosePushL( stream );
       
  1073     
       
  1074     TUint32 contentId = stream.ReadUint32L();
       
  1075     TUint32 caIndex = stream.ReadUint32L();
       
  1076     TUint32 mpxId = stream.ReadUint32L();
       
  1077     CleanupStack::PopAndDestroy( &stream );
       
  1078     TInt error( KErrNotReady );
       
  1079     if ( iEpgSession )
       
  1080         {
       
  1081         error = iEpgSession->GetVodClientImplL()->SetMpxIdL( contentId, caIndex, mpxId );    
       
  1082         }
       
  1083     aMessage.Complete(error);    
       
  1084     }
       
  1085 
       
  1086 // -----------------------------------------------------------------------------
       
  1087 // CIptvEpgMsgHandler::HandleContentCheckUpdateL
       
  1088 // 
       
  1089 // -----------------------------------------------------------------------------
       
  1090 //
       
  1091 void CIptvEpgMsgHandler::HandleContentCheckUpdateL( const RMessage2& aMessage )
       
  1092     {
       
  1093     IPTVLOGSTRING_LOW_LEVEL("CIptvEpgMsgHandler::HandleContentCheckUpdateL");
       
  1094     
       
  1095     TInt error( KErrNotReady );
       
  1096     TBool updateAvailable ( EFalse );
       
  1097     
       
  1098     if ( iEpgSession )
       
  1099         {
       
  1100         updateAvailable = iEpgSession->GetVodClientImplL()->IsVodUpdateNeededL();
       
  1101         error = KErrNone;
       
  1102         }
       
  1103 
       
  1104     HBufC8* data = HBufC8::NewL( KIptvVodGetUpdateTimeRequestSize );
       
  1105     CleanupStack::PushL( data );
       
  1106     TPtr8 dataPtr( data->Des() );
       
  1107     
       
  1108     RDesWriteStream stream;
       
  1109     stream.Open( dataPtr );    
       
  1110     CleanupClosePushL( stream );
       
  1111     stream.WriteInt32L( updateAvailable );  
       
  1112     CleanupStack::PopAndDestroy( &stream );
       
  1113     aMessage.WriteL( 0, dataPtr, 0 );    
       
  1114     CleanupStack::PopAndDestroy(data);    
       
  1115     aMessage.Complete(error);    
       
  1116     }