telephonyserverplugins/common_tsy/commontsy/src/mmutility/CResponseTimer.cpp
changeset 0 3553901f7fa8
child 19 630d2f34d719
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/common_tsy/commontsy/src/mmutility/CResponseTimer.cpp	Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,178 @@
+// Copyright (c) 2006-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:
+//
+
+
+
+//  INCLUDE FILES
+#include "CResponseTimer.h"
+#include "cmmphonetsy.h"
+#include "CResponseTimerStore.h"
+#include "MmTsy_timeoutdefs.h"
+#include <ctsy/tflogger.h>
+
+#ifdef REQHANDLE_TIMER
+
+// ======== MEMBER FUNCTIONS ========
+
+CResponseTimer* CResponseTimer::NewL( 
+    CMmPhoneTsy* aPhone ) //a Pointer to a phone        
+    {
+    CResponseTimer* runner = new (ELeave) CResponseTimer;
+    CleanupStack::PushL( runner );
+    //save pointer to phone
+    runner->iPhone = aPhone;
+    //initialize the beat Counter
+    runner->iBeatCounter = 0;
+    //2nd phase construction
+    runner->ConstructL();
+    CleanupStack::Pop();
+
+    return runner;
+    }
+
+CResponseTimer::CResponseTimer()
+    {
+    }
+
+void CResponseTimer::ConstructL()
+    {
+     // neutral priority, 0
+    iTimer = CHeartbeat::NewL( CActive::EPriorityStandard ); 
+    }
+
+CResponseTimer::~CResponseTimer()
+    {
+    if ( iTimer )
+        {
+        //stop calling Beat...
+        iTimer->Cancel();
+        }
+
+    delete iTimer;
+    }
+
+// ---------------------------------------------------------------------------
+// CResponseTimer::Start
+// Starts timer.
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+void CResponseTimer::Start()
+    {
+    //Check if active 
+    if ( !iTimer->IsActive() ) 
+        {
+        //Timer tick is on the second 
+        iTimer->Start( ETwelveOClock, this );
+        } 
+    }
+
+// ---------------------------------------------------------------------------
+// CResponseTimer::Stop
+// Stops timer.
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+void CResponseTimer::Stop()
+    {
+    //Check if active 
+    if ( iTimer->IsActive () ) 
+        { 
+        //Cancel beat method calling 
+        iTimer->Cancel(); 
+        } 
+    }
+
+// ---------------------------------------------------------------------------
+// CResponseTimer::Beat
+// Beat is called once every second.
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+void CResponseTimer::Beat()
+    {
+    //Update the timer time
+    iBeatCounter++;
+
+    //check if the time limit is reached for any entry
+    for ( TInt index = 0; 
+          index < iPhone->GetTimeStampStore()->NumberOfEntries();
+          index++ )
+        {
+        CResponseTimerStore::CTableEntry *aEntry = 
+            iPhone->GetTimeStampStore()->GetEntry( index );
+        //if the entry is expired, complete and delete it
+        if ( aEntry->GetTimeStamp() <= iBeatCounter )
+            {   
+TFLOGSTRING2("TSY: Request completed due timer expiration, IPC: %d", aEntry->GetIPC() ); 
+            
+            //call completion of the request due expired timer 
+            iPhone->TimerExpired( aEntry->GetUserObject(),
+                                  aEntry->GetHandleType(),
+                                  aEntry->GetIPC() );
+            }
+        else //aEntry.timeStamp > iBeatCounter
+            {
+            //break cause table is ordered.
+            break;
+            }
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CResponseTimer::Synchronize
+// Pure virtual class in base class. Called when synchronization
+// is lost. The iBeatCounter is increased.
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+void CResponseTimer::Synchronize()
+    {
+    if(iBeatCounter > 0)
+        {
+        iBeatCounter++;
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CResponseTimer::GetBeatCounter
+// Returns the the value of the iBeatCounter attribute.
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TUint32 CResponseTimer::GetBeatCounter()
+    {
+    return iBeatCounter;
+    }
+
+// ---------------------------------------------------------------------------
+// CResponseTimer::ResetBeatCounter
+// Resets the value of iBeatCounter to 0.
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+void CResponseTimer::ResetBeatCounter()
+    {
+    //set the beat counter to 0
+    iBeatCounter = 0;
+    }
+
+#endif //REQHANDLE_TIMER
+
+//  End of File
+
+
+
+