videoscheduler/SchedulerServer/inc/CCseSchedulerPluginControllerBase.h
changeset 0 822a42b6c3f1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoscheduler/SchedulerServer/inc/CCseSchedulerPluginControllerBase.h	Thu Dec 17 09:14:38 2009 +0200
@@ -0,0 +1,185 @@
+/*
+* Copyright (c) 2006 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:    Header for PluginControllerBase-class*
+*/
+
+
+
+
+#ifndef __CCSESCHEDULERPLUGINCONTROLLERBASE_H
+#define __CCSESCHEDULERPLUGINCONTROLLERBASE_H
+
+// INCLUDES
+#include <e32base.h>
+#include <ipvideo/MCsePluginObserver.h>
+#include <ipvideo/MCseScheduleObserver.h>
+#include "MCseSchedulerTimerObserver.h"
+#include "MCsePluginControllerObserver.h"
+
+// CONSTANTS
+// None
+
+// MACROS
+// None
+
+// DATA TYPES
+// None
+
+// FUNCTION PROTOTYPES
+// None
+
+// FORWARD DECLARATIONS
+// None
+
+// CLASS DECLARATION
+class CCseScheduledProgram;
+class CCseSchedulerTimer;
+class CCseSchedulerServerEngine;
+
+/**
+* Base class for plugin controllers. Handles all plugin related stuff except scheduling logic.
+*/
+class CCseSchedulerPluginControllerBase : public CBase,                                          
+                                          public MCseScheduleObserver,
+                                          public MCseSchedulerTimerObserver
+    {
+    public: // Constructors and destructor
+        /**
+        * Two-phased constructor.
+        * @params aEngine reference to engine
+        * @params aPluginUid plugin uid of the plugin this plugin controller is made for
+        * @return CCseSchedulerPluginControllerBase pointer to CCseSchedulerPluginControllerBase class
+        */
+        static CCseSchedulerPluginControllerBase* NewL( MCsePluginControllerObserver& aEngine, TInt32 aPluginUid );
+
+        /**
+        * Destructor.
+        */
+        virtual ~CCseSchedulerPluginControllerBase();
+
+    protected:
+        /**
+        * C++ default constructor.
+        */
+        CCseSchedulerPluginControllerBase( MCsePluginControllerObserver& aEngine, TInt32 aPluginUid );
+        
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL();           
+    
+    public: // from MCseScheduleObserver-class     
+        /**
+        * Plugins uses this method to inform common scheduler engine that
+        * schedule is handled.
+		* @param aDbIdentifier DbIdentifier of scheduled program that just
+		*                      has been processed.
+        */
+        virtual void ScheduleCompletedL( const TUint32 aDbIdentifier, TInt aCompletitionCode );
+
+    public: // from MCseSchedulerTimerObserver-class        
+        /**
+        * Plugins uses this method to inform common scheduler engine that
+        * schedule is handled.
+		* @param aDbIdentifier DbIdentifier of scheduled program that just
+		*                      has been processed.
+        */
+        virtual void TimerErrorL( const TInt32 aError );
+        
+        /**
+        * Timer is up, run the Plugins!!!
+        */
+        virtual void RunPluginsL( );
+
+    public: // New methods
+    
+        /**
+         * Sets plugin to be cleared after callstack break.
+         * @param aToBeCleared ETrue if controller needs to be cleared.
+         */
+        void SetToBeCleared( TBool aToBeCleared );
+        
+        /**
+         * Clears controller: clears (takes down all threads running for the plugin)
+         * all landlords. 
+         */
+        virtual void ClearControllerL();
+        
+        /**
+        * Cleans the controller from LandLord(s) that aren't needed anymore.
+        */
+        virtual void DoCleanUp( );
+     
+        /**
+        * Sets schedules to controller. More precise information is found from Uni and Multi
+        * controller classes.
+        * @params aScheduleArrat    Array of schedules to be set into controller. All given
+        *                           schedules should have same start time.
+        */
+        virtual void SetSchedulesL( RPointerArray<CCseScheduledProgram>& aScheduleArray );
+                
+        /**
+        * Gets plugin id. This Uid of the plugin going to be run when time is right. Can be
+        * used, for example, to find right kind of controller to a schedule.
+        * @return plugin Uid of the plugin used to run the schedule.
+        */
+        TInt32 PluginUid( );        
+        
+        /**
+        * Checks if the plugin is obsolete (There are no more schedules to be run).
+        * @return ETrue if obsolete, EFalse if not.
+        */
+        TBool IsObsolete() const;
+
+        /**
+        * Checks if the plugin is set to be cleared.
+        * @return ETrue if set, EFalse if not.
+        */
+        TBool IsToBeCleared();
+        
+        /**
+        * Checks if there are active plugins in controller.
+        * @return ETrue if active plugins found, EFalse otherwise
+        */
+        virtual TBool IsControllerActive();
+        
+    protected: //data        
+        /**
+        * Array containing schedules to be run. Own.
+        */
+        RPointerArray<CCseScheduledProgram> iScheduleArray;
+        
+         /**
+        * Timer class. Own.
+        */
+        CCseSchedulerTimer* iTimer;
+        
+        /**
+        * Reference to engine
+        */
+        MCsePluginControllerObserver& iEngine;
+        
+        /**
+        * Uid of the plugin contrelled by this controller.
+        */        
+        TInt32 iPluginUid;
+        
+        /**
+        * Boolean indicating if this plugin controller is to cleared
+        * (plugin running is deleted).
+        */        
+        TBool iToBeCleared;
+    };
+    
+#endif // __CCSESCHEDULERPLUGINCONTROLLERBASE_H