--- /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 <e32base.h>
+#include <e32def.h>
+#include <csch_cli.h> // RScheduler
+#include <schinfo.h> // 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<TTaskSchedulerCondition>* &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<CDmEventServiceBase*, KMaxServices> iServices;
+
+ };
+
+#endif // __DMEVENTSCHEDULER_H__