diff -r 798ee5f1972c -r 826cea16efd9 videoscheduler/SchedulerServer/inc/CCseSchedulerServerEngine.h --- a/videoscheduler/SchedulerServer/inc/CCseSchedulerServerEngine.h Thu Aug 19 10:54:18 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,328 +0,0 @@ -/* -* 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: Interface for Scheduler Server's Engine class* -*/ - - - - -#ifndef __CCSESCHEDULERSERVERENGINE_H -#define __CCSESCHEDULERSERVERENGINE_H - -// INCLUDES -#include // Observer so that CCseSchedulerTimer can inform engine. -#include "MCsePluginControllerObserver.h" // Observer so that CCseSchedulerTimer can inform engine. -#include "CseSchedulerServer.pan" // Panic codes - - -// CONSTANTS -// Usually we have only one scheduled event at a time so we set granularity to 1, but -// in some rare cases we migth have more so we have to use array. -const int KCseScheduleGranularity = 1; - -// MACROS -// None - -// DATA TYPES -// None - -// FUNCTION PROTOTYPES -// None - -// FORWARD DECLARATIONS -class CCseScheduleDB; -class CCseSchedulerTimer; -class CCseScheduledProgram; -class CCseSchedulerServerSession; -class CCseSchedulerServer; -class CCseSchedulerPluginControllerBase; - - -// CLASS DECLARATION -// None - -/** -* Server's "brain". Controls all subsession messages to current object for -* futher prosessing. Manages message list thru the reguest handler. Reads from -* the client address space and writes back to client address space. Controls -* sub objet request(s). -*/ -class CCseSchedulerServerEngine : public CObject, - public MCsePluginControllerObserver - { - public: // Constructors and destructor - - /** - * Two-phased constructor. - * @param Reference to scheduler server - * @return CCseSchedulerEngine pointer to CCseSchedulerEngine class - */ - static CCseSchedulerServerEngine* NewL( CCseSchedulerServer& aServer ); - - /** - * Destructor. - */ - virtual ~CCseSchedulerServerEngine(); - - public: // From MCsePluginControllerObserver - - void ScheduleCompletedSuccesfullyL( const TUint32 aDbIdentifier ); - - void ScheduleCompletedWithErrorL( const TUint32 aDbIdentifier, TUint32 aCompletionCode ); - - void IncreaseScheduleRunCountL( const TUint32 aDbIdentifier ); - - TBool IsAllowedToRun( TUint32 aDbIdentifier ); - - void ScheduleNotValid( const TUint32 aDbIdentifier ); - - void RequestReschedule( ); - - void ClearingDone(); - - public: // New methods - /** - * Plugin complete callback used with CIdle. Used to break call stack. - * @param aPtr Pointer back to CCseSchedulerUserInformer-class - * @return Always EFalse. - */ - static TInt CompletitionCallback( TAny* aPtr ); - - /** - * Schedule complete callback handler. Removes schedule from "on run list", - * informs engine that schedule has comlete and checks if the plugin where - * schedule was run still needed. - * @return Always EFalse - */ - TInt HandleCompletitionCallback(); - - /** - * Cleaner callback used with CIdle. Used to break call stack. - * @param aPtr Pointer back to CCseSchedulerUserInformer-class - * @return Always EFalse. - */ - static TInt CleanerCallback( TAny* aPtr ); - - /** - * Cleaner callback handler. Goes through all plugin contollers and clears them - * (shutdowns all threads running plugins). - * @return Always EFalse - */ - TInt HandleCleanerCallback(); - - public: // From CObject - /** - * Overwrites CObjects Close. Sets the AccesCount to zero. - * @return None - */ - void Close(); - - public: // New functions - - /** - * Does the general message handling. - * @param aMessage contains data from the client. - * @return None. - */ - void GeneralServiceL( const RMessage2& aMessage ); - - /** - * Service cancellation. - * @param aMessage contains data from the client. - * @return None. - */ - void CancelService( const RMessage2& aMessage ); - - /** - * Checks if scheduler is active atm (schedules in run or waitint) - * @return ETrue if active and EFalse if not. - */ - TBool IsSchedulerActive() const; - - /** - * Reschedules engine (get new "next schedule" from database and - * resets timer). - * @return None. - */ - void RescheduleL(); - - /** - * Reschedules engine (get new "next schedule" from database and - * resets timer). - * @return None. - */ - void RescheduleByPluginL( TInt32 aPluginUid ); - - private: // Constructors and destructor - - /** - * C++ default constructor. - * @param Reference to scheduler server. - */ - CCseSchedulerServerEngine( CCseSchedulerServer& aServer ); - - /** - * By default Symbian 2nd phase constructor is private. - */ - void ConstructL(); - - - private: // New functions - /** - * Panic the client on server side. - * @param aPanic Our panic code. - * @param aMessage A message from client - * @return None. - */ - void PanicClient( TCseSchedulerServPanic aPanic, - const RMessage2& aMessage ) const; - - /** - * Adds schedule to database - * @param aMessage A message from client - * @return None. - */ - void AddScheduleL( const RMessage2& aMessage ); - - /** - * Removes schedule from database - * @param aMessage A message from client - * @return None. - */ - void RemoveScheduleL( const RMessage2& aMessage ); - - /** - * Gets all schedules from database - * @param aMessage A message from client - * @return None. - */ - void GetSchedulesL( const RMessage2& aMessage ); - - /** - * Adds schedule to database - * @param aMessage A message from client - * @return None. - */ - void GetScheduleL( const RMessage2& aMessage ); - - /** - * Gets externalize length of one specific schedule - * @param aMessage A message from client - * @return None. - */ - void GetScheduleLengthL( const RMessage2& aMessage ); - - /** - * Gets schedules based on application UID. - * @param aMessage A message from client - * @return None. - */ - void GetSchedulesByAppUidL( const RMessage2& aMessage ); - - /** - * Gets externalize length of the schedules of one application UID - * @param aMessage A message from client - * @return None. - */ - void GetScheduleArrayLengthByAppUidL( const RMessage2& aMessage ); - - /** - * Gets externalize length of the overlapping schedules - * @param aMessage A message from client - * @return None. - */ - void GetOverlappingSchedulesLengthL( const RMessage2& aMessage ); - - /** - * Gets overlapping schedules of given timeframe - * @param aMessage A message from client - * @return None. - */ - void GetOverlappingSchedulesL( const RMessage2& aMessage ); - - /** - * Gets startup schedules from database (schedules that were on run when - * phone was shut down) - * @return None. - */ - void EngineSchedulesStartup(); - - /** - * Gets externalize length of the schedules of one plugin UID - * @param aMessage A message from client - * @return None. - */ - void GetScheduleArrayLengthByPluginUidL( const RMessage2& aMessage ); - - /** - * Gets schedules based on plugin UID. - * @param aMessage A message from client - * @return None. - */ - void GetSchedulesByPluginUidL( const RMessage2& aMessage ); - - /** - * Gets externalize length of the schedules of one type. - * @param aMessage A message from client - * @return None. - */ - void GetScheduleArrayLengthByTypeL( const RMessage2& aMessage ); - - /** - * Gets schedules based on schedule type. - * @param aMessage A message from client - * @return None. - */ - void GetSchedulesByTypeL( const RMessage2& aMessage ); - - /** - * Gets externalize length of the schedules of specific timeframe. - * @param aMessage A message from client - * @return None. - */ - void GetScheduleArrayLengthByTimeframeL( const RMessage2& aMessage ); - - /** - * Gets schedules between given timeframe. - * @param aMessage A message from client - * @return None. - */ - void GetSchedulesByTimeframeL( const RMessage2& aMessage ); - - private: // Data - /** - * DB class. Own. - */ - CCseScheduleDB* iDb; - - /** - * Array holding all plugin controllers. - */ - RPointerArray iPluginControllerArray; - - /** - * CIdle, used to break call stack when schedule completes. Own. - */ - CIdle* iCompletitionBreaker; - - /** - * Reference to scheduler server - */ - CCseSchedulerServer& iServer; - }; - -#endif // __CCSESCHEDULERSERVERENGINE_H - -// End of file -