videofeeds/server/IptvEpgManager/inc/CIptvEpgSession.h
changeset 0 96612d01cf9f
--- /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 <e32std.h>
+#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<TUint32>& aOldContentIds,
+                                       RArray<TUint32>& 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