keepalive/flextimer/server/engine/inc/flextimerengine.h
changeset 32 5c4486441ae6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/keepalive/flextimer/server/engine/inc/flextimerengine.h	Mon May 24 20:51:35 2010 +0300
@@ -0,0 +1,130 @@
+/*
+ * Copyright (c) 2010 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
+ *
+ * Description:
+ * This class contains definition of CFlexTimerEngine.
+ *
+ */
+
+// Protection against nested includes
+#ifndef FLEXTIMERENGINE_H
+#define FLEXTIMERENGINE_H
+
+// System includes
+#include <e32base.h>
+
+// User includes
+#include "mflextimerservice.h"
+#include "mflextimerwakeuptimercb.h"
+
+// Forward declarations
+class MFlexTimerServiceCB;
+class CFlexTimerContainer;
+class CFlexTimerWakeUpTimer;
+
+// Class declaration
+/**
+ *  Flexible timer engine that acts as service point towards session.
+ *  Handles timer wakeups and system time changes.
+ */
+class CFlexTimerEngine : public CBase,
+        public MFlexTimerService,
+        public MFlexTimerWakeUpTimerCB
+    {
+public:
+
+    /**
+     * Constructs new timer engine.
+     */
+    IMPORT_C static CFlexTimerEngine* NewL();
+
+    /**
+     * Destructs timer item.
+     */
+    virtual ~CFlexTimerEngine();
+
+public:
+    /**
+     * Inherited from MFlexTimerService
+     */
+
+    /**
+     * Implementation of inherited pure virtual function
+     *  
+     * @see MFlexTimerService::AddTimer
+     */
+    IMPORT_C TInt AddTimer(
+        const TTimeIntervalMicroSeconds& aWinStartInterval,
+        const TTimeIntervalMicroSeconds& aWinEndInterval,
+        TBool aCancelAtSystemTimeChange,
+        const MFlexTimerServiceCB* aFlexTimerServiceCB );
+
+    /**
+     * Implementation of inherited pure virtual function
+     *  
+     * @see MFlexTimerService::CancelTimer
+     */
+    IMPORT_C TInt CancelTimer(
+        const MFlexTimerServiceCB* aFlexTimerServiceCB );
+
+    /**
+     * Inherited from MFlexTimerWakeUpTimerCB
+     */
+
+    /**
+     * Implementation of inherited pure virtual function
+     *  
+     * @see MFlexTimerWakeUpTimerCB::WakeUp
+     */
+    void WakeUp();
+
+    /**
+     * Implementation of inherited pure virtual function
+     *  
+     * @see MFlexTimerWakeUpTimerCB::SystemTimeChanged
+     */
+    void SystemTimeChanged();
+
+private:
+    /**
+     * Private constructor.
+     *  
+     */
+    CFlexTimerEngine();
+
+    /**
+     * Private 2nd pahse constructor.
+     *  
+     */
+    void ConstructL();
+
+    /**
+     * Finds out what is the next time we have to wake up to fire some
+     * FlexTimers and starts CTimer accordingly.
+     *  
+     */
+    void StartTimer();
+
+private:
+    // Data
+    /**
+     * Container for all timers. Lives and dies with engine.
+     */
+    CFlexTimerContainer* iFlexTimerContainer;
+
+    /**
+     * Wake up timer to watch flextimer firings and system time change
+     */
+    CFlexTimerWakeUpTimer* iWakeUpTimer;
+
+    };
+
+#endif  //FLEXTIMERENGINE_H