--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/syncmlfw/common/http/src/NSmlXptShutdownTimer.cpp Thu Dec 17 09:07:52 2009 +0200
@@ -0,0 +1,154 @@
+/*
+* Copyright (c) 2003 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: SyncML HTTP client
+*
+*/
+
+
+// INCLUDE FILES
+#include "nsmlhttp.h"
+
+//RD_Auto_Restart
+#include "nsmlprivatepskeys.h"
+//RD_Auto_Restart
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CNSmlXptShutdownTimer::CNSmlXptShutdownTimer
+// constructor
+// -----------------------------------------------------------------------------
+//
+CNSmlXptShutdownTimer::CNSmlXptShutdownTimer( CNSmlHTTP* aEngine )
+ : CActive( EPriorityStandard ), iEngine( aEngine ) {}
+
+// -----------------------------------------------------------------------------
+// CNSmlXptShutdownTimer::ConstructL
+// 2-phase constructor
+// -----------------------------------------------------------------------------
+//
+void CNSmlXptShutdownTimer::ConstructL()
+ {
+ CActiveScheduler::Add( this );
+ // create a thread-relative timer
+ User::LeaveIfError( iTimer.CreateLocal() );
+ }
+
+// -----------------------------------------------------------------------------
+// CNSmlXptShutdownTimer::~CNSmlXptShutdownTimer
+// desctructor
+// -----------------------------------------------------------------------------
+//
+CNSmlXptShutdownTimer::~CNSmlXptShutdownTimer()
+ {
+ DBG_FILE(_S8("CNSmlXptShutdownTimer destructor called"));
+ Cancel();
+ iTimer.Close();
+ }
+
+// -----------------------------------------------------------------------------
+// CNSmlXptShutdownTimer::Start()
+// Start timer. CNSmlXptShutdownTimer is started with all the xpt calls
+// that have possibility to get jammed due to slow response from server etc.
+// -----------------------------------------------------------------------------
+//
+void CNSmlXptShutdownTimer::Start()
+ {
+ // do this only if session is DS
+ TInt session=0;
+ TInt r=RProperty::Get( KPSUidNSmlSOSServerKey, KNSmlSyncJobOngoing, session);
+ DBG_FILE_CODE(session, _S8("CNSmlXptShutdownTimer::Start() Current Session is (DM = 2, DS = 1) "));
+
+ TTimeIntervalMicroSeconds32 delay;
+ if( session == ESyncMLDSSession )//for DS session
+ delay = KNSmlDSXptShutdownInterval;
+ else
+ delay = KNSmlXptShutdownInterval;
+
+ iTimerSnapTime.HomeTime();
+ iTimerSnapTime += delay;
+ iTimer.At( iStatus, iTimerSnapTime );
+
+ SetActive();
+ iEngine->iTimeOut = EFalse;
+ }
+
+// -----------------------------------------------------------------------------
+// CNSmlXptShutdownTimer::StartAborted()
+// Start aborted timer. CNSmlXptShutdownTimer is started with all the xpt calls
+// that have possibility to get jammed due to slow response from server etc.
+// -----------------------------------------------------------------------------
+//
+void CNSmlXptShutdownTimer::StartAborted()
+ {
+ DBG_FILE(_S8("CNSmlXptShutdownTimer Start aborted timer begins"));
+ iTimer.At( iStatus, iTimerSnapTime );
+ SetActive();
+ iEngine->iTimeOut = EFalse;
+ }
+
+// -----------------------------------------------------------------------------
+// CNSmlXptShutdownTimer::DoCancel()
+// DoCancel() from CActive
+// -----------------------------------------------------------------------------
+//
+void CNSmlXptShutdownTimer::DoCancel()
+ {
+ DBG_FILE(_S8("CNSmlXptShutdownTimer DoCancel called"));
+ iTimer.Cancel();
+ }
+
+// -----------------------------------------------------------------------------
+// CNSmlXptShutdownTimer::RunL()
+// From CActive. Timer executes following operations if time is up.
+// -----------------------------------------------------------------------------
+//
+void CNSmlXptShutdownTimer::RunL()
+ {
+ DBG_FILE(_S8("HTTP client Time Out !!"));
+ DBG_FILE(_S8("CNSmlXptShutdownTimer RunL called"));
+
+ switch( iStatus.Int() )
+ {
+ case KErrNone:
+ {
+ DBG_FILE(_S8("No Error in ShutDownTimer, Normal completion"));
+ iEngine->iTimeOut = ETrue;
+ iEngine->Cancel();
+ } break;
+
+ case KErrCancel:
+ {
+ DBG_FILE(_S8("ShutDownTimer was cancelled!"));
+ iEngine->iTimeOut = ETrue;
+ iEngine->Cancel();
+ } break;
+
+ case KErrAbort:
+ {
+ DBG_FILE(_S8("ERROR, ShutDownTimer aborted"));
+ DBG_FILE(_S8("Restarting the Timer"));
+ // this->StartAborted();
+ this->Start();
+ } break;
+
+ default:
+ {
+ DBG_FILE(_S8("ShutDownTimer default operation"));
+ iEngine->iTimeOut = ETrue;
+ iEngine->Cancel();
+ } break;
+ }
+ }