diff -r 000000000000 -r 96612d01cf9f videofeeds/server/IptvEpgManager/inc/CIptvEpgSession.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videofeeds/server/IptvEpgManager/inc/CIptvEpgSession.h Mon Jan 18 20:21:12 2010 +0200 @@ -0,0 +1,383 @@ +/* +* Copyright (c) 2004-2008 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Controls epg services update* +*/ + + + + +#ifndef CIPTVEPGSESSION_H +#define CIPTVEPGSESSION_H + +// INCLUDES +#include +#include "CIptvUtil.h" +#include "MIptvEpgManagerUpdateObserver.h" +#include "MIptvServiceManagerObserver.h" + +// FORWARD DECLARATIONS +class CIptvMyVideosGlobalFileId; +class CIptvEpgVodClientImpl; +class CIptvEpgVodMsqQueue; +class CIptvEpgLiveTvCallbackImpl; +class CIptvEpgPluginInterface; +class CIptvEpgVodCallbackImpl; +class CIptvEpgDb; +class CIptvSearchManager; +class TIptvRssSearchQuery; +class CIptvEpgDatabase; +class CIptvEpgService; +class CIptvServer; +class CIptvEpgManagerUpdater; +class CVcxGroupUpdater; + +// CLASS DECLARATION +class CIptvEpgSession : public CBase, + public MIptvEpgManagerUpdateObserver, + public MIptvServiceManagerObserver + { + public: + + /** + * Two-phased constructor. + * @param + */ + static CIptvEpgSession* NewL( + CIptvEpgDb* aEpgDb, + TUint32 aServiceId, + CIptvEpgVodMsqQueue* aMsgQueue, + CIptvServer& aServer, + TBool aPluginCanRun, + TInt& aError ); + + /** + * Two-phased constructor. + * @param + */ + static CIptvEpgSession* NewL( + CIptvEpgDatabase* aLiveTvDb, + TUint32 aServiceId, + CIptvEpgVodMsqQueue* aMsgQueue, + CIptvServer& aServer, + TBool aPluginCanRun, + TInt& aError ); + + /** + * Destructor. + */ + ~CIptvEpgSession(); + + public: // From MIptvEpgManagerUpdateObserver interface + + /** + * Check is plugin running. + */ + void CheckIsPluginRunning(); + + public: + + /** + * Get reference count. + */ + TInt GetReferenceCount() { return iReferenceCount; }; + + /** + * Set reference count. + */ + void SetReferenceCount(TInt aReferenceCount) { iReferenceCount = aReferenceCount; }; + + /** + * Get service id. + */ + TUint32 GetServiceId() { return iServiceId; }; + + /** + * Reset global Id. + */ + TInt ResetGlobalId(CIptvMyVideosGlobalFileId& aId); + + /** + * Set global Id. + */ + TInt SetGlobalId(TUint32 aContentKey, CIptvMyVideosGlobalFileId& aId, TUint32 aIndex); + + /** + * Is Epg manager ready? + */ + TBool IsReadyL(); + + /** + * Set Epg manager ready. + */ + void SetReady(); + + /** + * Delete EPG-database. Mark database to be deleted. Database file is deleted + * when EPG-manager is deleted. + */ + void DeleteDatabaseFile(); + + /** + * Get pointer to Vod client implementation. + */ + CIptvEpgVodClientImpl* GetVodClientImplL(); + + /** + * Update Ecg. + * @since + * @param aForceUpdate Update required without last modified check. + * @return Error code, KErrNone if no errors, otherwise one of the system wide error codes. + */ + TInt UpdateEcg( TBool aForceUpdate ); + + /** + * Handle search request and forward the message to search manager + * to be handled. + * + * @param aSearchQuery Class containing search details + * @return KErrNone if successful, otherwise Symbian error code + */ + TInt Search( TIptvRssSearchQuery& aSearchQuery ); + + /** + * Gathers a list of used Content ID numbers and updates them to + * Search Manager. This is done to prevent overlapping of ID numbers + * between downloads from old and new search results. + */ + void UpdateSearchUsedContentIdsListL(); + + /** + * Updates the Content IDs that have changed during DB update to + * other interested parties (in practise Download Manager). + * + * @param aOldContentIds Array of old Content IDs. + * @param aNewContentIds Array of new Content IDs. + */ + void UpdateChangedContentIdsL( RArray& aOldContentIds, + RArray& aNewContentIds ); + + /** + * Returns true if plugin is running. + * + * @return ETrue if plugin is running. + */ + TBool IsPluginRunning() { return iPluginStarted; } + + /** + * Cancel the current active search + * @param None + * @return KErrNone if successful, otherwise Symbian error code + */ + TInt CancelSearch(); + + /** + * Initialize + */ + void InitializeL(); + + /** + * Set IAP for this service session. + */ + void SetIapL(TUint32 aIap); + + /** + * Update service thumbnail. + */ + void UpdateServiceThumbnailL( const TDesC& aIconFilePath, const TBool aGrouped ); + + /** + * Check if vod update is needed + * @return ETrue if update is needed for content. + * otherwise EFalse. + */ + TBool IsVodUpdateNeededL(); + + /** + * Vod plugin cancelled. + */ + void VodPluginCancelled(); + + /** + * Sets last update time for the service. + * @param aLastUpdate The last update time. + * @return Error code from database handling functions. + */ + TInt SetLastUpdateTimeL( const TTime& aLastUpdate ); + + public: // From MIptvServiceManagerObserver + + /** + * CIptvServiceManager calls this every time a service is + * modified in the database. + * @param aEvent Event to inform + */ + void HandleSmEvent( CIptvSmEvent& aEvent ); + + private: // New functions + + /** + * Check is VOD database update needed. + */ + void CheckIsVodUpdateNeededL(); + + /** + * C++ default constructor. + */ + CIptvEpgSession( + CIptvEpgDb* aEpgDb, + TUint32 aServiceId, + CIptvEpgVodMsqQueue* aMsgQueue, + CIptvServer& aServer, + TBool aPluginCanRun ); + + /** + * C++ default constructor. + */ + CIptvEpgSession( + CIptvEpgDatabase* aLiveTvDb, + TUint32 aServiceId, + CIptvEpgVodMsqQueue* aMsgQueue, + CIptvServer& aServer, + TBool aPluginCanRun ); + + /** + * By default Symbian 2nd phase constructor is private. + * @param + */ + TInt ConstructL(); + + /** + * Get service information. + * @param none + */ + TInt GetServiceInformationL(); + + /** + * Run VOD plugin. + * @param aForceUpdate Update required without last modified check. + */ + void RunVodPluginL( TBool aForceUpdate = EFalse ); + + /** + * Run VOD plugin. + * @param aForceUpdate Update required without last modified check. + */ + void RunVodPluginForFeedL( TBool aForceUpdate = EFalse ); + + /** + * Run VOD plugin. + * @param aForceUpdate Update required without last modified check. + */ + void RunVodPluginForGroupL( TBool aForceUpdate = EFalse ); + + /** + * Run SmartVision plugin. + */ + void RunSmartVisionPluginL(); + + /** + * VOD Plugin stopped. + */ + void VodPluginStopped(); + + /** + * Check is VOD update allowed. + * @param aErrorCode KErrServerBusy enables retry. + */ + TBool IsVodUpdateAllowedL( TInt& aErrorCode ); + + /** + * Check do we have valid VOD database available. + */ + TBool IsValidVodDbAvailableL(TTime& aLastUpdated, TTime& aInterval); + + /** + * Update VOD ecg. + * @param aForceUpdate Update required without last modified check. + */ + void UpdateVodEcgL( TBool aForceUpdate ); + + /** + * Update Thomson epg. + */ + TInt UpdateLiveEpg(); + + /** + * Send message to client. + */ + void SendMessageToClientL(TInt aMsg, TInt aInfo); + + /** + * Leaving part of search. + * @param error Completion code. + */ + void DoSearchL( TInt& error ); + + private: // Data members + + CIptvServer& iServer; + + CIptvEpgManagerUpdater* iUpdater; + + CIptvEpgVodClientImpl* iVodClient; + + CIptvEpgPluginInterface* iPlugin; + + CIptvEpgVodCallbackImpl* iVodCallback; + + CIptvSearchManager* iSearchManager; + + /** + * Session for updating costomized service group. + * own + */ + CVcxGroupUpdater* iGroupUpdater; + + CIptvEpgLiveTvCallbackImpl* iLiveTvCallback; + + CIptvEpgDb* iEpgDb; + + CIptvEpgDatabase* iLiveTvDatabase; + + CIptvEpgService* iService; + + CIptvEpgVodMsqQueue* iMsgQueue; + + TBool iPluginStarted; + + TBool iDeleteDatabase; + + TUint32 iServiceId; + + TBool iPluginCanRun; + + TInt iReferenceCount; + + TBool iInitialized; + + TBool iIsIap; + + TInt iIap; + + TBool iUpdatePending; + + TBool iReady; + + RFs iFs; + + TBool iForceUpdatePending; + + }; + +#endif // CIPTVEPGSESSION_H