diff -r 33a5d2bbf6fc -r 73a1feb507fb mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/sipclientstub/src/CSIPMessageElements.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/sipclientstub/src/CSIPMessageElements.cpp Tue Aug 31 15:12:07 2010 +0300 @@ -0,0 +1,418 @@ +/* +* 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 "SipMessageElements.h" +#include "SipHeaderBase.h" +#include "SipFromHeader.h" +#include "SipContactHeader.h" +#include "SipToHeader.h" +#include "SipCSeqHeader.h" +#include "SipContentTypeHeader.h" +#include "SipExtensionHeader.h" +#include "sipstrings.h" +#include "SipStrConsts.h" + + + +// ----------------------------------------------------------------------------- +// CSIPMessageElements::NewL +// ----------------------------------------------------------------------------- +// +EXPORT_C CSIPMessageElements* CSIPMessageElements::NewL() + { + CSIPMessageElements* self = CSIPMessageElements::NewLC(); + CleanupStack::Pop (self); + return self; + } + +// ----------------------------------------------------------------------------- +// CSIPMessageElements::NewLC +// ----------------------------------------------------------------------------- +// +EXPORT_C CSIPMessageElements* CSIPMessageElements::NewLC () + { + CSIPMessageElements* self = new(ELeave)CSIPMessageElements; + CleanupStack::PushL (self); + self->ConstructL (); + return self; + } + +// ----------------------------------------------------------------------------- +// CSIPMessageElements::CSIPMessageElements +// ----------------------------------------------------------------------------- +// +CSIPMessageElements::CSIPMessageElements () + : iHeaderLookupOpen(EFalse) + { + } + +// ----------------------------------------------------------------------------- +// CSIPMessageElements::ConstructL +// ----------------------------------------------------------------------------- +// +void CSIPMessageElements::ConstructL() + { +// SIPHeaderLookup::OpenL(); + iHeaderLookupOpen = ETrue; + iCSeqHeader = CSIPCSeqHeader::DecodeL( _L8("1 INVITE") ); + + } + +// ----------------------------------------------------------------------------- +// CSIPMessageElements::~CSIPMessageElements +// ----------------------------------------------------------------------------- +// +EXPORT_C CSIPMessageElements::~CSIPMessageElements () + { + /*if (iHeaderLookupOpen) + { + SIPHeaderLookup::Close(); + }*/ + delete iContent; + iUserHeaders.ResetAndDestroy(); + delete iFromHeader; + delete iToHeader; + delete iCSeqHeader; + delete iContentTypeHeader; + } + +// ----------------------------------------------------------------------------- +// CSIPMessageElements::SetUserHeadersL +// ----------------------------------------------------------------------------- +// +EXPORT_C void +CSIPMessageElements::SetUserHeadersL (RPointerArray& aHeaders) + { + RPointerArray tmpHeaders; + CleanupClosePushL(tmpHeaders); + for (TInt i=0; i& +CSIPMessageElements::UserHeaders() const + { + return iUserHeaders; + } + +// ----------------------------------------------------------------------------- +// CSIPMessageElements::SetContentL +// ----------------------------------------------------------------------------- +// +EXPORT_C void CSIPMessageElements::SetContentL (HBufC8* aContent, + CSIPContentTypeHeader* aType) + { + __ASSERT_ALWAYS (aContent != 0, User::Leave(KErrArgument)); + __ASSERT_ALWAYS (aContent->Length() > 0, User::Leave(KErrArgument)); + __ASSERT_ALWAYS (aType != 0, User::Leave(KErrArgument)); + + delete iContentTypeHeader; + iContentTypeHeader = aType; + delete iContent; + iContent = aContent; + } + +// ----------------------------------------------------------------------------- +// CSIPMessageElements::Content +// ----------------------------------------------------------------------------- +// +EXPORT_C const TDesC8& CSIPMessageElements::Content () const + { + if (iContent) + { + return *iContent; + } + return KNullDesC8; + } + +// ----------------------------------------------------------------------------- +// CSIPMessageElements::Content +// ----------------------------------------------------------------------------- +// +EXPORT_C const CSIPContentTypeHeader* CSIPMessageElements::ContentType() const + { + return iContentTypeHeader; + } + +// ----------------------------------------------------------------------------- +// CSIPMessageElements::ExtractContent +// ----------------------------------------------------------------------------- +// +EXPORT_C HBufC8* CSIPMessageElements::ExtractContent () + { + HBufC8* tmp = iContent; + iContent = 0; + delete iContentTypeHeader; + iContentTypeHeader = 0; + return tmp; + } + +// ----------------------------------------------------------------------------- +// CSIPMessageElements::InternalizeL +// ----------------------------------------------------------------------------- +// +CSIPMessageElements* +CSIPMessageElements::InternalizeL (RReadStream& aReadStream) + { + CSIPMessageElements* self = CSIPMessageElements::NewLC(); + self->DoInternalizeL(aReadStream); + CleanupStack::Pop(); // self + return self; + } + +// ----------------------------------------------------------------------------- +// CSIPMessageElements::DoInternalizeL +// ----------------------------------------------------------------------------- +// +void CSIPMessageElements::DoInternalizeL (RReadStream& /*aReadStream*/) + { + + } + +// ----------------------------------------------------------------------------- +// CSIPMessageElements::ExternalizeL +// ----------------------------------------------------------------------------- +// +void +CSIPMessageElements::ExternalizeL (RWriteStream& /*aWriteStream*/) const + { + + } + +// ----------------------------------------------------------------------------- +// CSIPMessageElements::UserHeaderCount +// ----------------------------------------------------------------------------- +// +TInt CSIPMessageElements::UserHeaderCount (RStringF aName) const + { + TInt headerCount = 0; + for (TInt i=0; i < iUserHeaders.Count(); i++) + { + if (iUserHeaders[i]->Name() == aName) + { + headerCount++; + } + } + return headerCount; + } + +// ----------------------------------------------------------------------------- +// CSIPMessageElements::UserHeadersL +// ----------------------------------------------------------------------------- +// +const RPointerArray +CSIPMessageElements::UserHeadersL (RStringF aName) const + { + RPointerArray headers; + CleanupClosePushL(headers); + for (TInt i=0; i < iUserHeaders.Count(); i++) + { + if (iUserHeaders[i]->Name() == aName) + { + User::LeaveIfError(headers.Append(iUserHeaders[i])); + } + } + CleanupStack::Pop(1); // headers + return headers; + } + +// ----------------------------------------------------------------------------- +// CSIPMessageElements::RemoveHeaders +// ----------------------------------------------------------------------------- +// +TInt CSIPMessageElements::RemoveHeaders (RStringF aName) + { + TInt err = KErrNotFound; + for (TInt i=iUserHeaders.Count()-1; i>=0; i--) + { + if (iUserHeaders[i]->Name() == aName) + { + CSIPHeaderBase* header = iUserHeaders[i]; + iUserHeaders.Remove(i); + delete header; + err = KErrNone; + } + } + return err; + } + +// ----------------------------------------------------------------------------- +// CSIPMessageElements::DetachUserHeader +// ----------------------------------------------------------------------------- +// +void CSIPMessageElements::DetachUserHeader (CSIPHeaderBase* aHeader) + { + for (TInt i=0; i < iUserHeaders.Count(); i++) + { + if (iUserHeaders[i] == aHeader) + { + iUserHeaders.Remove(i); + } + } + } + +// ----------------------------------------------------------------------------- +// CSIPMessageElements::AddHeaderL +// ----------------------------------------------------------------------------- +// +void CSIPMessageElements::AddHeaderL (CSIPHeaderBase* aHeader) + { + __ASSERT_ALWAYS (aHeader != 0, User::Leave(KErrArgument)); + + if (aHeader->Name() == SIPStrings::StringF(SipStrConsts::EFromHeader)) + { + delete iFromHeader; + iFromHeader = static_cast(aHeader); + } + else if (aHeader->Name() == SIPStrings::StringF(SipStrConsts::EToHeader)) + { + delete iToHeader; + iToHeader = static_cast(aHeader); + } + else if (aHeader->Name() == SIPStrings::StringF(SipStrConsts::ECSeqHeader)) + { + delete iCSeqHeader; + iCSeqHeader = static_cast(aHeader); + } + else if (aHeader->Name() == + SIPStrings::StringF(SipStrConsts::EContentTypeHeader)) + { + delete iContentTypeHeader; + iContentTypeHeader = static_cast(aHeader); + } + else + { + User::LeaveIfError(iUserHeaders.Append(aHeader)); + } + } + +// ----------------------------------------------------------------------------- +// CSIPMessageElements::SetToL +// ----------------------------------------------------------------------------- +// +void CSIPMessageElements::SetToL (CSIPToHeader* aTo) + { + __ASSERT_ALWAYS (aTo != 0, User::Leave(KErrArgument)); + __ASSERT_ALWAYS (!aTo->HasParam(SIPStrings::StringF(SipStrConsts::ETag)), + User::Leave(KErrArgument)); + + delete iToHeader; + iToHeader = aTo; + } + +// ----------------------------------------------------------------------------- +// CSIPMessageElements::To +// ----------------------------------------------------------------------------- +// +const CSIPToHeader* CSIPMessageElements::To() const + { + return iToHeader; + } + +// ----------------------------------------------------------------------------- +// CSIPMessageElements::SetFromL +// ----------------------------------------------------------------------------- +// +void CSIPMessageElements::SetFromL (CSIPFromHeader* aFrom) + { + __ASSERT_ALWAYS (aFrom != 0, User::Leave(KErrArgument)); + __ASSERT_ALWAYS (!aFrom->HasParam(SIPStrings::StringF(SipStrConsts::ETag)), + User::Leave(KErrArgument)); + + delete iFromHeader; + iFromHeader = aFrom; + } + +// ----------------------------------------------------------------------------- +// CSIPMessageElements::From +// ----------------------------------------------------------------------------- +// +const CSIPFromHeader* CSIPMessageElements::From() const + { + return iFromHeader; + } + +// ----------------------------------------------------------------------------- +// CSIPMessageElements::CSeq +// ----------------------------------------------------------------------------- +// +const CSIPCSeqHeader* CSIPMessageElements::CSeq() const + { + return iCSeqHeader; + } + +// ----------------------------------------------------------------------------- +// CSIPMessageElements::SetContent +// ----------------------------------------------------------------------------- +// +void CSIPMessageElements::SetContent (HBufC8* aContent) + { + delete iContent; + iContent = aContent; + } + +// ----------------------------------------------------------------------------- +// CSIPMessageElements::DetachContent +// ----------------------------------------------------------------------------- +// +void CSIPMessageElements::DetachContent () + { + iContent = 0; + } + +// ----------------------------------------------------------------------------- +// CSIPMessageElements::CheckUserHeaderL +// ----------------------------------------------------------------------------- +// +void CSIPMessageElements::CheckUserHeaderL (const CSIPHeaderBase* /*aHeader*/) const + { + + } + +// ----------------------------------------------------------------------------- +// CSIPMessageElements::ExternalizeUserHeadersL +// ----------------------------------------------------------------------------- +// +void +CSIPMessageElements::ExternalizeUserHeadersL (RWriteStream& /*aWriteStream*/) const + { + + } + +// ----------------------------------------------------------------------------- +// CSIPMessageElements::ExternalizeL +// ----------------------------------------------------------------------------- +// +void CSIPMessageElements::ExternalizeL (const CSIPExtensionHeader* /*aHeader*/, + RWriteStream& /*aWriteStream*/) const + { + + } +