diff -r 000000000000 -r b497e44ab2fc terminalsecurity/SCP/DmEventNotifier/inc/DmEventScheduler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/terminalsecurity/SCP/DmEventNotifier/inc/DmEventScheduler.h Thu Dec 17 09:07:52 2009 +0200 @@ -0,0 +1,188 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "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: This header contains the class which creates the condition schedule. +* +*/ +#ifndef __DMEVENTSCHEDULER_H__ +#define __DMEVENTSCHEDULER_H__ + +// System Includes +#include +#include +#include // RScheduler +#include // TSchedulerItemRef, TTaskInfo... + +//User includes +#include "DmEventServiceBase.h" +#include "DmEventNotifierCommon.h" +#include "DmEventNotifierInternal.h" + +const TUid KAppDmEventNotifierUid = TUid::Uid(KAppUidDmEventNotifier); //UID3 from .mmp file + +//Forward declarations +class CSwInstallObserver; + +/** + * Install scheduler is responsible for creating the condition schedules and notifying server + * when they expire + * + * @since S60 v5.2 + */ +NONSHARABLE_CLASS(CDmEventScheduler) : public CBase + { + + public: + + /** Two phase construction **/ + static CDmEventScheduler* NewL(); + + static CDmEventScheduler* NewLC(); + + /** Destructor **/ + virtual ~CDmEventScheduler(); + + /** Member functions **/ + /** + * This function creates all the condition schedule required by the services + * + * @since S60 v5.2 + * @param aService - the service to be scheduled. If not specified all will be + * scheduled + * @return None. Can leave with system wide errors + */ + void CreateConditionScheduleL(CDmEventServiceBase* aService = NULL); + + /** + * This function creates one condition schedule with task for a service + * + * @since S60 v5.2 + * @param aSchedulerItem - A unique id for the schedule + * @param aScheduler - Task schedule client side interface + * @param aDefaultRunTime - Task schedule time + * @param aNewTaskId - The new task in after it is created + * @param aConditions - The condition array + * @param aService - The service base pointer + * @return KErrNone or system wide error + */ + TInt CreateConditionScheduleWithTaskL (TSchedulerItemRef& aSchedulerItem, + RScheduler& aScheduler, + const TTsTime& aDefaultRunTime, + TInt& aNewTaskId, + CArrayFixFlat* &aConditions, + CDmEventServiceBase* aService); + + /** + * This function will wait until a service operation is complete. For example, during software uninstallation + * this function returns only when the uninstallation is complete. + * + * @since S60 v5.2 + * @param aTaskName - Name of the task + * @return None. Can leave with system wide error + */ + void WaitAndCreateConditionScheduleL(TName aTaskName); + + private: + + /** + * Default constructor + * + * @since S60 v5.2 + * @param NOne + * @return + */ + CDmEventScheduler(); + + /** + * Constructs member variables + * + * @since S60 v5.2 + * @return None. Can leave with system wide error. + */ + void ConstructL(); + + /** + * Deletes any outstanding task and schedule + * + * @since S60 v5.2 + * @return None. Can leave with system wide error + */ + void DeleteScheduleL(); + + /** + * Creates the condition array for the provided service + * + * @since S60 v5.2 + * @param aService - the service for which condition array is to be created + * @return Condition array. Can leave with system wide errors. + */ + CSchConditionArray* CreateConditionLC(CDmEventServiceBase* aService); + + /** + * Finds the expired service when scheduler triggers it. + * + * @since S60 v5.2 + * @param aTaskName - the task name of the expired schedule + * @return base class pointer of the service + */ + CDmEventServiceBase* FindExpiredService(TName& aTaskName); + + /** + * This functions notifies other registered servers when a service expires + * + * @since S60 v5.2 + * @param aServiceId - the service that has expired + * @param aOpn - the operation the service has undergone + * @return None. Can leave with system wide errors + */ + void NotifyRegisteredServersL(THandlerServiceId aServiceId, THandlerOperation aOpn); + + /** + * Checks whether the schedule is already created or not + * + * @since S60 v5.2 + * @return ETrue if schedule is already created; otherwise EFalse. Can leave + * with system wide errors. + */ + TBool IsScheduleEnabledL(); + + /** + * Once schedule is created successfully, this function is called to set the + * schedule as enabled. otherwise it is called with disabled. + * + * @since S60 v5.2 + * @param Status of the schedule + * @return None. System wide errors + */ + void SetScheduleEnabledL(TBool aValue); + + private: + + /** + * The client side symbian scheduler + */ + RScheduler iScheduler; + + /** + * The scheduler item reference + */ + TSchedulerItemRef iConditionScheduleHandle; + + /** + * Array to hold the services objects + */ + TFixedArray iServices; + + }; + +#endif // __DMEVENTSCHEDULER_H__