--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/sipclientstub/src/CSIPRequestElements.cpp Thu Dec 17 08:44:37 2009 +0200
@@ -0,0 +1,237 @@
+/*
+* Copyright (c) 2007 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 "siprequestelements.h"
+#include "sipmessageelements.h"
+#include "sipfromheader.h"
+#include "siptoheader.h"
+#include "sipstrings.h"
+#include "sipstrconsts.h"
+#include "_sipcodecdefs.h"
+
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::NewL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPRequestElements* CSIPRequestElements::NewL(CUri8* aRemoteUri)
+ {
+ CSIPRequestElements* self = CSIPRequestElements::NewLC(aRemoteUri);
+ CleanupStack::Pop (self);
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::NewLC
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPRequestElements* CSIPRequestElements::NewLC(CUri8* aRemoteUri)
+ {
+ CSIPRequestElements* self = new(ELeave)CSIPRequestElements;
+ CleanupStack::PushL (self);
+ self->ConstructL (aRemoteUri);
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::CSIPRequestElements
+// -----------------------------------------------------------------------------
+//
+CSIPRequestElements::CSIPRequestElements()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CSIPRequestElements::ConstructL(CUri8* aRemoteUri)
+ {
+ __ASSERT_ALWAYS (aRemoteUri != 0, User::Leave(KErrArgument));
+
+ iMessageElements = CSIPMessageElements::NewL();
+ SetRemoteUriL(aRemoteUri);
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::~CSIPRequestElements
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPRequestElements::~CSIPRequestElements()
+ {
+ delete iRemoteURI;
+ iMethod.Close();
+ delete iMessageElements;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::SetToHeaderL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CSIPRequestElements::SetToHeaderL(CSIPToHeader* aTo)
+ {
+ iMessageElements->SetToL(aTo);
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::ToHeader
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const CSIPToHeader* CSIPRequestElements::ToHeader() const
+ {
+ return iMessageElements->To();
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::SetFromHeaderL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CSIPRequestElements::SetFromHeaderL(CSIPFromHeader* aFrom)
+ {
+ iMessageElements->SetFromL(aFrom);
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::FromHeader
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const CSIPFromHeader* CSIPRequestElements::FromHeader() const
+ {
+ return iMessageElements->From();
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::CSeqHeader
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const CSIPCSeqHeader* CSIPRequestElements::CSeqHeader() const
+ {
+ return iMessageElements->CSeq();
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::SetRemoteURIL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CSIPRequestElements::SetRemoteUriL(CUri8* aRemoteUri)
+ {
+ __ASSERT_ALWAYS (aRemoteUri != 0, User::Leave(KErrArgument));
+
+ delete iRemoteURI;
+ iRemoteURI = aRemoteUri;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::RemoteURI
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const CUri8& CSIPRequestElements::RemoteUri() const
+ {
+ return *(iRemoteURI);
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::SetMethodL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CSIPRequestElements::SetMethodL(RStringF aMethod)
+ {
+ __ASSERT_ALWAYS (aMethod.DesC().Length() > 0, User::Leave(KErrArgument));
+
+ iMethod.Close();
+ iMethod = aMethod.Copy();
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::Method
+// -----------------------------------------------------------------------------
+//
+EXPORT_C RStringF CSIPRequestElements::Method() const
+ {
+ return iMethod;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::MessageElements
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const CSIPMessageElements& CSIPRequestElements::MessageElements() const
+ {
+ return *iMessageElements;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::MessageElements
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPMessageElements& CSIPRequestElements::MessageElements()
+ {
+ return *iMessageElements;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::InternalizeL
+// -----------------------------------------------------------------------------
+//
+CSIPRequestElements* CSIPRequestElements::InternalizeL(RReadStream& aReadStream)
+ {
+ CSIPRequestElements* self = new(ELeave)CSIPRequestElements;
+ CleanupStack::PushL(self);
+ self->DoInternalizeL(aReadStream);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::DoInternalizeL
+// -----------------------------------------------------------------------------
+//
+void CSIPRequestElements::DoInternalizeL(RReadStream& aReadStream)
+ {
+ // For incoming requests the method is always present
+/* TUint32 methodLength = aReadStream.ReadUint32L();
+ if (methodLength > 0)
+ {
+ HBufC8* methodBuf = HBufC8::NewLC(methodLength);
+ TPtr8 methodPtr(methodBuf->Des());
+ aReadStream.ReadL(methodPtr,methodLength);
+ iMethod = SIPStrings::Pool().OpenFStringL(methodPtr);
+ CleanupStack::PopAndDestroy(methodBuf);
+ }
+ aReadStream.ReadUint8L(); // remote-URI always present
+ iRemoteURI = CURIContainer::InternalizeL(aReadStream);
+ iMessageElements = CSIPMessageElements::InternalizeL(aReadStream);
+*/ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequestElements::ExternalizeL
+// -----------------------------------------------------------------------------
+//
+void CSIPRequestElements::ExternalizeL(RWriteStream& aWriteStream) const
+ {
+/* TPtrC8 method(iMethod.DesC());
+ // For outgoing requests in some cases the method is filled in ServerCore
+ if (method.Length() > 0)
+ {
+ aWriteStream.WriteUint32L(method.Length());
+ aWriteStream.WriteL(method);
+ }
+ aWriteStream.WriteUint8L(1); // remote-URI always present
+ iRemoteURI->ExternalizeL(aWriteStream);
+ iMessageElements->ExternalizeL(aWriteStream);
+*/ }