keepalive/flextimer/server/engine/inc/flextimeritem.h
changeset 32 5c4486441ae6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/keepalive/flextimer/server/engine/inc/flextimeritem.h	Mon May 24 20:51:35 2010 +0300
@@ -0,0 +1,150 @@
+/*
+ * 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 CFlexTimerItem.
+ *
+ */
+
+// Protection against nested includes
+#ifndef FLEXTIMERITEM_H
+#define FLEXTIMERITEM_H
+
+// System includes
+#include <e32base.h>
+
+// User includes
+// None
+
+// Forward declarations
+class MFlexTimerServiceCB;
+
+// Class declaration
+/**
+ *  Timer item that contains expiry time, window size and other timer specific
+ *  parameters. Class implements container for one timer information in
+ *  FlexTimerServer.
+ */
+class CFlexTimerItem : public CBase
+    {
+public:
+
+    /** Constructor
+     *
+     * Constructs new timer item that contains all information needed to
+     * decide when to launch timer.
+     *
+     * @param aAbsoluteMinTime Left side of the timer launch window.
+     * @param aAbsoluteMaxTime Right side of the timer launch window.
+     * @param aCancelAtSystemTimeChange Whether system time change should
+     * trigger abort.
+     * @param aFlexTimerServiceCB Call back interface. Used to inform about
+     * timeout, abort etc.
+     * @return New CFlexTimer object.
+     */
+    static CFlexTimerItem* NewL( const TTime& aAbsoluteMinTime,
+        const TTime& aAbsoluteMaxTime,
+        TBool aCancelAtSystemTimeChange,
+        const MFlexTimerServiceCB* aFlexTimerServiceCB );
+
+    /** Destructor
+     * Destructs timer item.
+     */
+    virtual ~CFlexTimerItem();
+
+public:
+    /**
+     * Gets the earliest possible moment when this timer can expire. 
+     * Places value to reference parameter. 
+     *
+     * @param aMinAbsoluteTime After function returns this parameter contains
+     * absolute earliest moment when this timer can expire         
+     */
+    inline void GetMinAbsoluteTime( TTime& aMinAbsoluteTime );
+
+    /**
+     * Gets the latest possible moment when this timer must expire. 
+     * Places value to reference parameter. 
+     *
+     * @param aMaxAbsoluteTime After function returns this parameter contains
+     * absolute latest moment when this timer must expire       
+     */
+    inline void GetMaxAbsoluteTime( TTime& aMaxAbsoluteTime );
+
+    /**
+     * Checks whether this timer should be aborted if system time changes
+     *
+     * @return 
+     * ETrue - If timer should be aborted when system time changes
+     * EFalse - If timer should not be cancelled when system time changes        
+     */
+    inline TBool IsAbortedAtSystemTimeChange();
+
+    /**
+     * Returns timers corresponding CB session pointer.
+     *
+     * @return pointer to session that initiated this timer       
+     */
+    const MFlexTimerServiceCB* GetCB();
+
+private:
+    /**
+     * Private contructor. Constructs new timer item that contains all
+     * information needed to decide when to launch timer.
+     *
+     * @param aAbsoluteMinTime Left side of the timer launch window.
+     * @param aAbsoluteMaxTime Right side of the timer launch window.
+     * @param aCancelAtSystemTimeChange Whether system time change should
+     * trigger abort.
+     * @param aFlexTimerServiceCB Call back interface. Used to inform about
+     * timeout, abort etc.
+     *
+     * @return New CFlexTimer object.
+     * 
+     */
+    CFlexTimerItem( const TTime& aAbsoluteMinTime,
+        const TTime& aAbsoluteMaxTime,
+        TBool aCancelAtSystemTimeChange,
+        const MFlexTimerServiceCB* aFlexTimerServiceCB );
+
+public:
+    //Data
+    /**
+     * Single linked list link object for timers lists
+     */
+    TSglQueLink iLink;
+
+private:
+    // Data
+    /**
+     * Whether timer should be aborted when system time changes.
+     */
+    TBool iAbortAtSystemTimeChange;
+
+    /**
+     * Left side of the time window when timer can be fired
+     */
+    TTime iAbsoluteMinTime;
+
+    /**
+     * Right side of the time window when timer can be fired
+     */
+    TTime iAbsoluteMaxTime;
+
+    /**
+     * pointer to the session interface that is used to inform timeout
+     */
+    const MFlexTimerServiceCB* iMFlexTimerServiceCB;
+    };
+
+#include "flextimeritem.inl"
+
+#endif  //FLEXTIMERITEM_H