--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/realtimenetprots/sipfw/SIP/Codec/src/CSIPRequest.cpp Tue Feb 02 01:03:15 2010 +0200
@@ -0,0 +1,222 @@
+// Copyright (c) 2004-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 : CSIPRequest.cpp
+// Part of : SIP Codec
+// Version : SIP/4.0
+//
+
+
+
+
+#include "siprequest.h"
+#include "sipuri.h"
+#include "siphostport.h"
+#include "sipcodecerr.h"
+#include "SIPSyntaxCheck.h"
+#include "sipstrings.h"
+#include "sipstrconsts.h"
+#include "sipcodecutils.h"
+#include "uricontainer.h"
+#include "_sipcodecdefs.h"
+
+
+_LIT8 (KSpace, " ");
+
+// -----------------------------------------------------------------------------
+// CSIPRequest::NewL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPRequest* CSIPRequest::NewL (RStringF aMethod)
+ {
+ CSIPRequest* self = CSIPRequest::NewLC(aMethod);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequest::NewLC
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPRequest* CSIPRequest::NewLC (RStringF aMethod)
+ {
+ CSIPRequest* self = new(ELeave)CSIPRequest;
+ CleanupStack::PushL(self);
+ self->ConstructL(aMethod);
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequest::NewL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPRequest* CSIPRequest::NewL ()
+ {
+ CSIPRequest* self = CSIPRequest::NewLC();
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequest::NewLC
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPRequest* CSIPRequest::NewLC()
+ {
+ CSIPRequest* self = new(ELeave) CSIPRequest;
+ CleanupStack::PushL (self);
+ self->ConstructL();
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequest::CSIPRequest
+// -----------------------------------------------------------------------------
+//
+CSIPRequest::CSIPRequest()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequest::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CSIPRequest::ConstructL(RStringF aMethod)
+ {
+ CSIPMessage::ConstructL();
+ SetMethodL(aMethod);
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequest::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CSIPRequest::ConstructL ()
+ {
+ CSIPMessage::ConstructL();
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequest::~CSIPRequest
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPRequest::~CSIPRequest()
+ {
+ iMethod.Close();
+ delete iRequestURI;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequest::IsRequest
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TBool CSIPRequest::IsRequest() const
+ {
+ return ETrue;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequest::SetMethodL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CSIPRequest::SetMethodL (const TDesC8& aMethod)
+ {
+ RStringF tmpString =
+ SIPCodecUtils::CheckAndCreateTokenL(aMethod, KErrSipCodecSIPMethod);
+ iMethod.Close();
+ iMethod = tmpString;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequest::SetMethodL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CSIPRequest::SetMethodL (RStringF aMethod)
+ {
+ SetMethodL(aMethod.DesC());
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequest::Method
+// -----------------------------------------------------------------------------
+//
+EXPORT_C RStringF CSIPRequest::Method() const
+ {
+ return iMethod;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequest::SetRequestURIL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CSIPRequest::SetRequestURIL (CURIContainer* aRequestURI)
+ {
+ __ASSERT_ALWAYS (aRequestURI != 0, User::Leave (KErrArgument));
+
+ delete iRequestURI; iRequestURI = 0;
+ iRequestURI = aRequestURI;
+ if(iRequestURI->IsSIPURI())
+ {
+ iRequestURI->SIPURI()->DeleteParam(SIPStrings::StringF(SipStrConsts::EMethod));
+ iRequestURI->SIPURI()->DeleteAllURIHeaders();
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequest::RequestURI
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CURIContainer* CSIPRequest::RequestURI()
+ {
+ return iRequestURI;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPRequest::ToTextFirstLineLC
+// From CSIPMessage:
+// -----------------------------------------------------------------------------
+//
+HBufC8* CSIPRequest::ToTextFirstLineLC () const
+ {
+ TPtrC8 sipVersion(SIPVersion().DesC());
+ TPtrC8 method(Method().DesC());
+ TUint requestLineLength = method.Length() + KSpace().Length() +
+ sipVersion.Length();
+ HBufC8* requestURIAsText = 0;
+ if (iRequestURI != 0)
+ {
+ requestURIAsText = iRequestURI->ToTextL();
+ CleanupStack::PushL(requestURIAsText);
+ requestLineLength += requestURIAsText->Length() + KSpace().Length();
+ }
+
+ HBufC8* requestLine = HBufC8::NewL(requestLineLength);
+ if (requestURIAsText != 0)
+ {
+ CleanupStack::Pop(requestURIAsText);
+ }
+ CleanupStack::PushL(requestLine);
+ TPtr8 requestLinePtr(requestLine->Des());
+ requestLinePtr.Append(method);
+ requestLinePtr.Append(KSpace);
+ if (requestURIAsText != 0)
+ {
+ requestLinePtr.Append(*requestURIAsText);
+ requestLinePtr.Append(KSpace);
+ }
+ requestLinePtr.Append(sipVersion);
+
+ delete requestURIAsText;
+
+ return requestLine;
+ }