realtimenetprots/sipfw/ProfileAgent/Server/Src/SipProfileCSSessionHelper.cpp
changeset 0 307788aac0a8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/realtimenetprots/sipfw/ProfileAgent/Server/Src/SipProfileCSSessionHelper.cpp	Tue Feb 02 01:03:15 2010 +0200
@@ -0,0 +1,147 @@
+// Copyright (c) 2003-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        : sipprofilecssessionhelper
+// Part of     : SIP Profile Server
+// implementation
+// Version     : 1.0
+// INCLUDE FILES
+//
+
+
+
+#include <s32mem.h>
+#include "sipprofilecs.h"
+#include "SipProfileCSServer.h"
+#include "SipProfileCSSessionHelper.h"
+#include "sipconcreteprofile.h"
+#include "sipconcreteprofileholder.h"
+#include "sipprofileslots.h"
+#include "sipprofileplugins.h"
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CSIPProfileCSSessionHelper::ServiceFunction
+// -----------------------------------------------------------------------------
+//
+int CSIPProfileCSSessionHelper::ServiceFunction(const RMessage2& aMessage) const
+	{
+	return aMessage.Function();
+	}
+
+// -----------------------------------------------------------------------------
+// CSIPProfileCSSessionHelper::CompleteService
+// -----------------------------------------------------------------------------
+//
+void CSIPProfileCSSessionHelper::CompleteService(
+	const RMessage2& aMessage, TInt aCode) const
+	{
+	aMessage.Complete(aCode);
+	}
+
+// -----------------------------------------------------------------------------
+// CSIPProfileCSSessionHelper::IPCArgTUintL
+// -----------------------------------------------------------------------------
+//
+TUint CSIPProfileCSSessionHelper::IPCArgTUintL(
+	TSipProfileItcArguments aIpcArgIndex,
+    const RMessage2&  aMessage) const
+	{
+    TUint value(0);
+    switch (static_cast<TInt>(aIpcArgIndex))
+		{
+        case 0: value = aMessage.Int0(); break;
+        case 1: value = aMessage.Int1(); break;
+        case 2: value = aMessage.Int2(); break;
+        case 3: value = aMessage.Int3(); break;
+        default: User::Leave(KErrArgument); break;
+		}
+    return value; 
+	}
+
+// -----------------------------------------------------------------------------
+// CSIPProfileCSSessionHelper::ReadLC
+// -----------------------------------------------------------------------------
+//
+HBufC8* CSIPProfileCSSessionHelper::ReadLC(
+	TSipProfileItcArguments aItcArgIndex,
+	const RMessage2&  aMessage) const
+	{
+    TInt length = aMessage.GetDesLength(aItcArgIndex);
+    __ASSERT_ALWAYS(length >= 0, User::Leave(KErrArgument));
+
+    HBufC8* buf = HBufC8::NewLC(length);
+	TPtr8 bufPtr(buf->Des());
+    aMessage.ReadL(aItcArgIndex, bufPtr);
+    
+    return buf;
+	}
+
+// -----------------------------------------------------------------------------
+// CSIPProfileCSSessionHelper::ReadSipIdsL
+// -----------------------------------------------------------------------------
+//
+TSIPProfileSlots CSIPProfileCSSessionHelper::ReadSipIdsL(
+	const RMessage2& aMessage) const
+	{
+    TPckgBuf<TSIPProfileSlots> sipIdsPckg;
+    aMessage.ReadL(ESipProfileItcArgSlots, sipIdsPckg);
+    return sipIdsPckg();
+	}
+
+// -----------------------------------------------------------------------------
+// CSIPProfileCSSessionHelper::WriteL
+// -----------------------------------------------------------------------------
+//
+void CSIPProfileCSSessionHelper::WriteL(
+	const RMessage2& aMessage,
+    const TSIPProfileSlots& aIds)
+	{
+    TPckgBuf<TSIPProfileSlots> sipIdsPckg(aIds);
+    WriteL(ESipProfileItcArgSlots, aMessage, sipIdsPckg);
+	}
+
+// -----------------------------------------------------------------------------
+// CSIPProfileCSSessionHelper::WriteL
+// -----------------------------------------------------------------------------
+//
+void CSIPProfileCSSessionHelper::WriteL(TSipProfileItcArguments aItcArgIndex,
+	const RMessage2&  aMessage,
+	const TDesC8&    aDes)
+	{
+    TInt length = aMessage.GetDesMaxLength(aItcArgIndex);
+    __ASSERT_ALWAYS(length >= aDes.Length(), User::Leave (KErrOverflow));
+    aMessage.WriteL (aItcArgIndex, aDes);
+    }
+
+// -----------------------------------------------------------------------------
+// CSIPProfileCSSessionHelper::ReadSIPProfileTypeInfoL
+// -----------------------------------------------------------------------------
+//
+void CSIPProfileCSSessionHelper::ReadSIPProfileTypeInfoL(
+    const RMessage2& aMessage,
+    TSIPProfileTypeInfo& aTypeInfo) const
+    {
+	HBufC8* type = ReadLC(ESipProfileItcArgNarrator,aMessage);
+
+	__ASSERT_ALWAYS(type->Length() <= aTypeInfo.iSIPProfileName.MaxLength(),
+	                User::Leave(KErrArgument));
+
+	aTypeInfo.iSIPProfileName = *type;
+	aTypeInfo.iSIPProfileClass = 
+	    static_cast<TSIPProfileTypeInfo::TSIPProfileClass>(
+	        IPCArgTUintL(ESipProfileItcArgType, aMessage));
+		
+	CleanupStack::PopAndDestroy(type);	    
+    }