diff -r 000000000000 -r 822a42b6c3f1 videoscheduler/SchedulerServer/inc/CCseSchedulerPluginControllerBase.h --- /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 +#include +#include +#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& 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 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