--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/sipclientstub/src/CSIPResponseElements.cpp Thu Dec 17 08:44:37 2009 +0200
@@ -0,0 +1,218 @@
+/*
+* Copyright (c) 2004 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 "SipResponseElements.h"
+#include "SipMessageElements.h"
+#include "sipstrings.h"
+#include "SipStrConsts.h"
+
+#include "musunittesting.h"
+
+// -----------------------------------------------------------------------------
+// CSIPResponseElements::NewL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPResponseElements*
+CSIPResponseElements::NewL (TUint aStatusCode, RStringF aReasonPhrase)
+ {
+ CSIPResponseElements* self =
+ CSIPResponseElements::NewLC(aStatusCode,aReasonPhrase);
+ CleanupStack::Pop (self);
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPResponseElements::NewLC
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPResponseElements*
+CSIPResponseElements::NewLC (TUint aStatusCode, RStringF aReasonPhrase)
+ {
+ CSIPResponseElements* self = new(ELeave)CSIPResponseElements;
+ CleanupStack::PushL (self);
+ self->ConstructL (aStatusCode,aReasonPhrase);
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPResponseElements::CSIPResponseElements
+// -----------------------------------------------------------------------------
+//
+CSIPResponseElements::CSIPResponseElements ()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPResponseElements::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CSIPResponseElements::ConstructL (TUint aStatusCode,
+ RStringF aReasonPhrase)
+ {
+ SetStatusCodeL (aStatusCode);
+ iReasonPhrase = aReasonPhrase.Copy();
+ iMessageElements = CSIPMessageElements::NewL();
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPResponseElements::~CSIPResponseElements
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPResponseElements::~CSIPResponseElements ()
+ {
+ delete iMessageElements;
+ iReasonPhrase.Close();
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPResponseElements::SetStatusCodeL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CSIPResponseElements::SetStatusCodeL (TUint aStatusCode)
+ {
+ iStatusCode = aStatusCode;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPResponseElements::StatusCode
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUint CSIPResponseElements::StatusCode() const
+ {
+ return iStatusCode;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPResponseElements::SetReasonPhraseL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void
+CSIPResponseElements::SetReasonPhraseL (RStringF aReasonPhrase)
+ {
+ iReasonPhrase.Close();
+ iReasonPhrase = aReasonPhrase.Copy();
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPResponseElements::ReasonPhrase
+// -----------------------------------------------------------------------------
+//
+EXPORT_C RStringF CSIPResponseElements::ReasonPhrase () const
+ {
+ return iReasonPhrase;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPResponseElements::FromHeader
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const CSIPFromHeader* CSIPResponseElements::FromHeader () const
+ {
+ return iMessageElements->From();
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPResponseElements::ToHeader
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const CSIPToHeader* CSIPResponseElements::ToHeader () const
+ {
+ return iMessageElements->To();
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPResponseElements::CSeqHeader
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const CSIPCSeqHeader* CSIPResponseElements::CSeqHeader() const
+ {
+ return iMessageElements->CSeq();
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPResponseElements::MessageElements
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const CSIPMessageElements&
+CSIPResponseElements::MessageElements () const
+ {
+ return *iMessageElements;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPResponseElements::MessageElements
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPMessageElements& CSIPResponseElements::MessageElements ()
+ {
+ return *iMessageElements;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPResponseElements::InternalizeL
+// -----------------------------------------------------------------------------
+//
+CSIPResponseElements*
+CSIPResponseElements::InternalizeL (RReadStream& aReadStream)
+ {
+ CSIPResponseElements* self =
+ CSIPResponseElements::InternalizeLC(aReadStream);
+ CleanupStack::Pop(); // self
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPResponseElements::InternalizeLC
+// -----------------------------------------------------------------------------
+//
+CSIPResponseElements*
+CSIPResponseElements::InternalizeLC (RReadStream& aReadStream)
+ {
+ CSIPResponseElements* self = new(ELeave)CSIPResponseElements;
+ CleanupStack::PushL (self);
+ self->DoInternalizeL(aReadStream);
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPResponseElements::DoInternalizeL
+// -----------------------------------------------------------------------------
+//
+void CSIPResponseElements::DoInternalizeL (RReadStream& aReadStream)
+ {
+ iStatusCode = aReadStream.ReadUint16L();
+ TUint32 reasonPhraseLength = aReadStream.ReadUint32L();
+ HBufC8* reasonPhraseBuf = HBufC8::NewLC(reasonPhraseLength);
+ TPtr8 reasonPhrasePtr(reasonPhraseBuf->Des());
+ aReadStream.ReadL(reasonPhrasePtr,reasonPhraseLength);
+ iReasonPhrase = SIPStrings::Pool().OpenFStringL(reasonPhrasePtr);
+ CleanupStack::PopAndDestroy(reasonPhraseBuf);
+ iMessageElements = CSIPMessageElements::InternalizeL(aReadStream);
+ }
+
+// -----------------------------------------------------------------------------
+// CSIPResponseElements::ExternalizeL
+// -----------------------------------------------------------------------------
+//
+void CSIPResponseElements::ExternalizeL (RWriteStream& aWriteStream) const
+ {
+ aWriteStream.WriteUint16L(iStatusCode);
+ TPtrC8 reasonPhrase(iReasonPhrase.DesC());
+ aWriteStream.WriteUint32L(reasonPhrase.Length());
+ aWriteStream.WriteL(reasonPhrase);
+ iMessageElements->ExternalizeL(aWriteStream);
+ }