--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/realtimenetprots/sipfw/ClientResolver/Server/src/sipcrworkerao.cpp Tue Feb 02 01:03:15 2010 +0200
@@ -0,0 +1,250 @@
+// Copyright (c) 2007-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 : sipcrworkerao.cpp
+// Part of : SIP / SIP Client Resolver
+// Version : %version: 2.1.1 %
+//
+
+
+
+#include "sipcrworkerao.h"
+#include "CSipCRServerSession.h"
+
+// ----------------------------------------------------------------------------
+// CSipCrWorkerAo::NewL
+// ----------------------------------------------------------------------------
+//
+CSipCrWorkerAo* CSipCrWorkerAo::NewL(CSIPCRServerSession& aSession)
+ {
+ CSipCrWorkerAo* self = CSipCrWorkerAo::NewLC(aSession);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+// ----------------------------------------------------------------------------
+// CSipCrWorkerAo::NewLC
+// ----------------------------------------------------------------------------
+//
+CSipCrWorkerAo* CSipCrWorkerAo::NewLC(CSIPCRServerSession& aSession)
+ {
+ CSipCrWorkerAo* self = new(ELeave)CSipCrWorkerAo(aSession);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ return self;
+ }
+
+// ----------------------------------------------------------------------------
+// CSipCrWorkerAo::NewL
+// ----------------------------------------------------------------------------
+//
+CSipCrWorkerAo* CSipCrWorkerAo::NewL(
+ TUint32 aRequestId,
+ CBufBase* aSerializedSipRequest,
+ HBufC8* aSipRequestBody,
+ const TSipClient& aSipClient,
+ const TUid& aResolverUid,
+ CSIPCRServerSession& aSession)
+ {
+ CSipCrWorkerAo* self =
+ CSipCrWorkerAo::NewLC(
+ aRequestId,aSerializedSipRequest,aSipRequestBody,
+ aSipClient,aResolverUid,aSession);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+// ----------------------------------------------------------------------------
+// CSipCrWorkerAo::NewLC
+// ----------------------------------------------------------------------------
+//
+CSipCrWorkerAo* CSipCrWorkerAo::NewLC(
+ TUint32 aRequestId,
+ CBufBase* aSerializedSipRequest,
+ HBufC8* aSipRequestBody,
+ const TSipClient& aSipClient,
+ const TUid& aResolverUid,
+ CSIPCRServerSession& aSession)
+ {
+ CSipCrWorkerAo* self =
+ new(ELeave)CSipCrWorkerAo(
+ aRequestId,aSipClient,aResolverUid,aSession);
+ CleanupStack::PushL(self);
+ self->ConstructL(aSerializedSipRequest,aSipRequestBody);
+ return self;
+ }
+
+// ----------------------------------------------------------------------------
+// CSipCrWorkerAo::CSipCrWorkerAo
+// ----------------------------------------------------------------------------
+//
+CSipCrWorkerAo::CSipCrWorkerAo(CSIPCRServerSession& aSession)
+ : CActive(EPriorityStandard),
+ iSession(aSession),
+ iSipClient(TUid::Null(),EFalse,EFalse)
+ {
+ CActiveScheduler::Add(this);
+ }
+
+// ----------------------------------------------------------------------------
+// CSipCrWorkerAo::CSipCrWorkerAo
+// ----------------------------------------------------------------------------
+//
+CSipCrWorkerAo::CSipCrWorkerAo(
+ TUint32 aRequestId,
+ const TSipClient& aSipClient,
+ const TUid& aResolverUid,
+ CSIPCRServerSession& aSession)
+ : CActive(EPriorityStandard),
+ iSession(aSession),
+ iRequestId(aRequestId),
+ iSipClient(aSipClient),
+ iResolverUid(aResolverUid)
+ {
+ CActiveScheduler::Add(this);
+ }
+
+// ----------------------------------------------------------------------------
+// CSipCrWorkerAo::ConstructL
+// ----------------------------------------------------------------------------
+//
+void CSipCrWorkerAo::ConstructL()
+ {
+ iSerializedSipRequest = CBufFlat::NewL(1);
+ iSipRequestBody = KNullDesC8().AllocL();
+ }
+
+// ----------------------------------------------------------------------------
+// CSipCrWorkerAo::ConstructL
+// ----------------------------------------------------------------------------
+//
+void CSipCrWorkerAo::ConstructL(
+ CBufBase* aSerializedSipRequest,
+ HBufC8* aSipRequestBody)
+ {
+ __ASSERT_ALWAYS(aSerializedSipRequest != NULL, User::Leave(KErrArgument));
+ iSerializedSipRequest = aSerializedSipRequest;
+ iSipRequestBody = aSipRequestBody;
+ }
+
+// ----------------------------------------------------------------------------
+// CSipCrWorkerAo::~CSipCrWorkerAo
+// ----------------------------------------------------------------------------
+//
+CSipCrWorkerAo::~CSipCrWorkerAo()
+ {
+ CActive::Cancel();
+ iThread.Close();
+ delete iSerializedSipRequest;
+ delete iSipRequestBody;
+ }
+
+// ----------------------------------------------------------------------------
+// CSipCrWorkerAo::StartThreadL
+// ----------------------------------------------------------------------------
+//
+void CSipCrWorkerAo::StartThreadL(RThread& aThread)
+ {
+ User::LeaveIfError(iThread.Duplicate(aThread));
+ aThread.Logon(iStatus);
+ aThread.Resume();
+ SetActive();
+ }
+
+// ----------------------------------------------------------------------------
+// CSipCrWorkerAo::Session
+// ----------------------------------------------------------------------------
+//
+CSIPCRServerSession& CSipCrWorkerAo::Session()
+ {
+ return iSession;
+ }
+
+// ----------------------------------------------------------------------------
+// CSipCrWorkerAo::SerializedSipRequest
+// ----------------------------------------------------------------------------
+//
+CBufBase& CSipCrWorkerAo::SerializedSipRequest()
+ {
+ return *iSerializedSipRequest;
+ }
+
+// ----------------------------------------------------------------------------
+// CSipCrWorkerAo::GetSipRequestBody
+// ----------------------------------------------------------------------------
+//
+HBufC8* CSipCrWorkerAo::GetSipRequestBody()
+ {
+ HBufC8* tmp = iSipRequestBody;
+ iSipRequestBody = NULL;
+ return tmp;
+ }
+
+// ----------------------------------------------------------------------------
+// CSipCrWorkerAo::SipClient
+// ----------------------------------------------------------------------------
+//
+TSipClient& CSipCrWorkerAo::SipClient()
+ {
+ return iSipClient;
+ }
+
+// ----------------------------------------------------------------------------
+// CSipCrWorkerAo::ResolverUid
+// ----------------------------------------------------------------------------
+//
+const TUid& CSipCrWorkerAo::ResolverUid() const
+ {
+ return iResolverUid;
+ }
+
+// ----------------------------------------------------------------------------
+// CSipCrWorkerAo::RequestId
+// ----------------------------------------------------------------------------
+//
+TUint32 CSipCrWorkerAo::RequestId() const
+ {
+ return iRequestId;
+ }
+
+// ----------------------------------------------------------------------------
+// CSipCrWorkerAo::CompletionCode
+// ----------------------------------------------------------------------------
+//
+TInt CSipCrWorkerAo::CompletionCode() const
+ {
+ TExitType exitType = iThread.ExitType();
+ if (exitType == EExitPanic)
+ {
+ return KErrGeneral;
+ }
+ return iStatus.Int();
+ }
+
+// ----------------------------------------------------------------------------
+// CSipCrWorkerAo::RunL
+// ----------------------------------------------------------------------------
+//
+void CSipCrWorkerAo::RunL()
+ {
+ iSession.WorkerAoRequestCompleted(this); // Note: deletes this
+ }
+
+// ----------------------------------------------------------------------------
+// CSipCrWorkerAo::DoCancel
+// ----------------------------------------------------------------------------
+//
+void CSipCrWorkerAo::DoCancel()
+ {
+ iThread.LogonCancel(iStatus);
+ }