--- /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