realtimenetprots/sipfw/SIP/TransactionUser/src/UserAgentTimer.cpp
changeset 0 307788aac0a8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/realtimenetprots/sipfw/SIP/TransactionUser/src/UserAgentTimer.cpp	Tue Feb 02 01:03:15 2010 +0200
@@ -0,0 +1,200 @@
+// Copyright (c) 2005-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:
+// Name          : UserAgentTimer.cpp
+// Part of       : TransactionUser
+// Version       : SIP/4.0
+//
+
+
+
+#include "SipAssert.h"
+#include "UserAgentTimer.h"
+#include "InviteUAS.h"
+#include "InviteUAC.h"
+
+// -----------------------------------------------------------------------------
+// CUserAgentTimer::CUserAgentTimer
+// -----------------------------------------------------------------------------
+//
+CUserAgentTimer::CUserAgentTimer(MTimerManager& aTimerMgr,
+								 MExpirationHandler* aObserver,
+								 TUint32 aDuration) :
+	CTimerBase(aTimerMgr, aObserver, aDuration)
+	{	
+	}
+
+// -----------------------------------------------------------------------------
+// CTimerStopUA::NewL
+// -----------------------------------------------------------------------------
+//
+CTimerStopUA* CTimerStopUA::NewL(MTimerManager& aTimerMgr,
+							     MExpirationHandler* aObserver,
+								 TUint32 aDuration,
+								 TInt aReason)
+	{    
+    __SIP_ASSERT_LEAVE(aObserver, KErrArgument);
+
+	CTimerStopUA* self = new (ELeave) CTimerStopUA(aTimerMgr,
+												   aObserver,
+												   aDuration,
+												   aReason);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop();
+	return self;
+	}
+
+// -----------------------------------------------------------------------------
+// CTimerStopUA::CTimerStopUA
+// -----------------------------------------------------------------------------
+//
+CTimerStopUA::CTimerStopUA(MTimerManager& aTimerMgr,
+						   MExpirationHandler* aObserver,
+						   TUint32 aDuration,
+						   TInt aReason) : 
+	CUserAgentTimer(aTimerMgr, aObserver, aDuration),
+	iReason(aReason)
+	{
+	}
+
+// -----------------------------------------------------------------------------
+// CTimerStopUA::ExpiredL
+// CUserAgent::DeleteTimer() is not called, as it will delete this object and
+// the execution is currently inside it.
+// -----------------------------------------------------------------------------
+//
+void CTimerStopUA::ExpiredL(CUserAgent* aUserAgent, TTimerId aTimerId)
+	{
+    __SIP_ASSERT_LEAVE(aUserAgent, KErrArgument);
+    __SIP_ASSERT_LEAVE(aTimerId == iId, KErrArgument);
+
+	aUserAgent->Stop(iReason);
+	}
+
+// -----------------------------------------------------------------------------
+// CTimerRetransmit2xx::NewL
+// -----------------------------------------------------------------------------
+//
+CTimerRetransmit2xx* CTimerRetransmit2xx::NewL(MTimerManager& aTimerMgr,
+											   MExpirationHandler* aObserver,
+											   TUint32 aDuration)
+	{
+	CTimerRetransmit2xx* self = new (ELeave) CTimerRetransmit2xx(aTimerMgr,
+																 aObserver,
+																 aDuration);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// -----------------------------------------------------------------------------
+// CTimerRetransmit2xx::CTimerRetransmit2xx
+// -----------------------------------------------------------------------------
+//
+CTimerRetransmit2xx::CTimerRetransmit2xx(MTimerManager& aTimerMgr,
+										 MExpirationHandler* aObserver,
+										 TUint32 aDuration) :
+	CUserAgentTimer(aTimerMgr, aObserver, aDuration)
+	{
+	}
+
+// -----------------------------------------------------------------------------
+// CTimerRetransmit2xx::ExpiredL
+// -----------------------------------------------------------------------------
+//
+void CTimerRetransmit2xx::ExpiredL(CUserAgent* aUserAgent, TTimerId aTimerId)
+	{
+    __SIP_ASSERT_LEAVE(aUserAgent, KErrArgument);
+    __SIP_ASSERT_LEAVE(aTimerId == iId, KErrArgument);
+	
+    CInviteUAS::Ptr(*aUserAgent).Retransmit2xxL();
+	}
+
+// -----------------------------------------------------------------------------
+// CTimerOwnerResolver::NewL
+// -----------------------------------------------------------------------------
+//
+CTimerOwnerResolver* CTimerOwnerResolver::NewL(MTimerManager& aTimerMgr,
+											   MExpirationHandler* aObserver,
+											   TUint32 aDuration)
+	{
+	CTimerOwnerResolver* self = new (ELeave) CTimerOwnerResolver(aTimerMgr,
+															     aObserver,
+															     aDuration);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// -----------------------------------------------------------------------------
+// CTimerOwnerResolver::CTimerOwnerResolver
+// -----------------------------------------------------------------------------
+//
+CTimerOwnerResolver::CTimerOwnerResolver(MTimerManager& aTimerMgr,
+									     MExpirationHandler* aObserver,
+									     TUint32 aDuration) :
+	CUserAgentTimer(aTimerMgr, aObserver, aDuration)
+	{
+	}
+
+// -----------------------------------------------------------------------------
+// CTimerOwnerResolver::ExpiredL
+// -----------------------------------------------------------------------------
+//
+void CTimerOwnerResolver::ExpiredL(CUserAgent* aUserAgent, TTimerId aTimerId)
+	{
+    __SIP_ASSERT_LEAVE(aUserAgent, KErrArgument);
+    __SIP_ASSERT_LEAVE(aTimerId == iId, KErrArgument);
+
+    static_cast<CUserAgentServer*>(aUserAgent)->RequestRouterErrorL();
+	}
+	
+// -----------------------------------------------------------------------------
+// CTimerAsyncSIPSec::NewL
+// -----------------------------------------------------------------------------
+//
+CTimerAsyncSIPSec* CTimerAsyncSIPSec::NewL(MTimerManager& aTimerMgr,
+				 					       MExpirationHandler* aObserver)
+	{
+	CTimerAsyncSIPSec* self = new (ELeave) CTimerAsyncSIPSec(aTimerMgr,
+															 aObserver);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// -----------------------------------------------------------------------------
+// CTimerAsyncSIPSec::CTimerAsyncSIPSec
+// -----------------------------------------------------------------------------
+//
+CTimerAsyncSIPSec::CTimerAsyncSIPSec(MTimerManager& aTimerMgr,
+									 MExpirationHandler* aObserver) :
+	CUserAgentTimer(aTimerMgr, aObserver, 0)
+	{
+	}
+
+// -----------------------------------------------------------------------------
+// CTimerAsyncSIPSec::ExpiredL
+// -----------------------------------------------------------------------------
+//
+void CTimerAsyncSIPSec::ExpiredL(CUserAgent* aUserAgent, TTimerId aTimerId)
+	{
+    __SIP_ASSERT_LEAVE(aUserAgent, KErrArgument);
+    __SIP_ASSERT_LEAVE(aTimerId == iId, KErrArgument);
+
+	CInviteUAC::Ptr(*aUserAgent).SIPSecTimerExpiredL();
+	}