diff -r 000000000000 -r 307788aac0a8 realtimenetprots/sipfw/SIP/Codec/src/CSIPFromToHeaderBase.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/realtimenetprots/sipfw/SIP/Codec/src/CSIPFromToHeaderBase.cpp Tue Feb 02 01:03:15 2010 +0200 @@ -0,0 +1,228 @@ +// 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 : CSIPFromToHeaderBase.cpp +// Part of : SIP Codec +// Version : SIP/4.0 +// + + + + +#include "sipfromtoheaderbase.h" +#include "sipaddress.h" +#include "sipuri.h" +#include "siphostport.h" +#include "CSIPFromToHeaderParams.h" +#include "sipstrings.h" +#include "sipstrconsts.h" +#include "sipcodecerr.h" +#include "uricontainer.h" +#include "_sipcodecdefs.h" + +// ----------------------------------------------------------------------------- +// CSIPFromToHeaderBase::CSIPFromToHeaderBase +// ----------------------------------------------------------------------------- +// +CSIPFromToHeaderBase::CSIPFromToHeaderBase() + : CSIPParameterHeaderBase(';') + { + } + +// ----------------------------------------------------------------------------- +// CSIPFromToHeaderBase::ConstructL +// ----------------------------------------------------------------------------- +// +void CSIPFromToHeaderBase::ConstructL() + { + iParams = new(ELeave)CSIPFromToHeaderParams; + } + +// ----------------------------------------------------------------------------- +// CSIPFromToHeaderBase::ConstructL +// ----------------------------------------------------------------------------- +// +void CSIPFromToHeaderBase::ConstructL (CSIPAddress* aSIPAddress) + { + ConstructL (); + SetSIPAddressL (aSIPAddress); + } + +// ----------------------------------------------------------------------------- +// CSIPFromToHeaderBase::ConstructL +// ----------------------------------------------------------------------------- +// +void CSIPFromToHeaderBase::ConstructL (const CSIPFromToHeaderBase& aHeader) + { + iParams = CSIPFromToHeaderParams::NewL (*(aHeader.iParams)); + if (aHeader.iSIPAddress != 0) + { + iSIPAddress = CSIPAddress::NewL (*(aHeader.iSIPAddress)); + } + } + +// ----------------------------------------------------------------------------- +// CSIPFromToHeaderBase::~CSIPFromToHeaderBase +// ----------------------------------------------------------------------------- +// +EXPORT_C CSIPFromToHeaderBase::~CSIPFromToHeaderBase() + { + delete iParams; + delete iSIPAddress; + } + +// ----------------------------------------------------------------------------- +// CSIPFromToHeaderBase::SetSIPAddressL +// ----------------------------------------------------------------------------- +// +EXPORT_C void CSIPFromToHeaderBase::SetSIPAddressL (CSIPAddress* aSIPAddress) + { + __ASSERT_ALWAYS (aSIPAddress != 0, + User::Leave(KErrSipCodecFromOrToAddress)); + + delete iSIPAddress; + iSIPAddress = aSIPAddress; + + if(iSIPAddress->URI().IsSIPURI()) + { + CSIPURI& sipURI = *(iSIPAddress->URI().SIPURI()); + sipURI.HostPort().DeletePort(); + sipURI.DeleteParam(SIPStrings::StringF(SipStrConsts::EMethod)); + sipURI.DeleteParam(SIPStrings::StringF(SipStrConsts::EMaddr)); + sipURI.DeleteParam(SIPStrings::StringF(SipStrConsts::ETtl)); + sipURI.DeleteParam(SIPStrings::StringF(SipStrConsts::ETransport)); + sipURI.DeleteParam(SIPStrings::StringF(SipStrConsts::ELr)); + sipURI.DeleteAllURIHeaders(); + } + } + +// ----------------------------------------------------------------------------- +// CSIPFromToHeaderBase::SIPAddress +// ----------------------------------------------------------------------------- +// +EXPORT_C const CSIPAddress& CSIPFromToHeaderBase::SIPAddress() const + { + return *iSIPAddress; + } + +// ----------------------------------------------------------------------------- +// CSIPFromToHeaderBase::SIPAddress +// ----------------------------------------------------------------------------- +// +EXPORT_C CSIPAddress& CSIPFromToHeaderBase::SIPAddress() + { + return *iSIPAddress; + } + +// ----------------------------------------------------------------------------- +// CSIPFromToHeaderBase::operator== +// ----------------------------------------------------------------------------- +// +EXPORT_C TBool +CSIPFromToHeaderBase::operator==(const CSIPFromToHeaderBase& aHeader) const + { + if (!(iSIPAddress->URI() == aHeader.SIPAddress().URI())) + { + return EFalse; + } + return (*iParams == *(aHeader.iParams)); + } + +// ----------------------------------------------------------------------------- +// CSIPFromToHeaderBase::HasCompactName +// From CSIPHeaderBase: +// ----------------------------------------------------------------------------- +// +TBool CSIPFromToHeaderBase::HasCompactName () const + { + return ETrue; + } + +// ----------------------------------------------------------------------------- +// CSIPFromToHeaderBase::DoInternalizeValueL +// ----------------------------------------------------------------------------- +// +void CSIPFromToHeaderBase::DoInternalizeValueL (RReadStream& aReadStream) + { + CSIPAddress* tmpAddr = CSIPAddress::InternalizeL (aReadStream); + CleanupStack::PushL(tmpAddr); + SetSIPAddressL(tmpAddr); + CleanupStack::Pop(tmpAddr); + iParams = CSIPFromToHeaderParams::InternalizeL (aReadStream); + } + +// ----------------------------------------------------------------------------- +// CSIPFromToHeaderBase::ExternalizeValueL +// From CSIPHeaderBase: +// ----------------------------------------------------------------------------- +// +void CSIPFromToHeaderBase::ExternalizeValueL (RWriteStream& aWriteStream) const + { + iSIPAddress->ExternalizeL(aWriteStream); + iParams->ExternalizeL (aWriteStream); + } + +// ----------------------------------------------------------------------------- +// CSIPFromToHeaderBase::PreferredPlaceInMessage +// From CSIPHeaderBase: +// ----------------------------------------------------------------------------- +// +CSIPHeaderBase::TPreferredPlace +CSIPFromToHeaderBase::PreferredPlaceInMessage () const + { + return CSIPHeaderBase::EMiddleTop; + } + +// ----------------------------------------------------------------------------- +// CSIPFromToHeaderBase::ToTextMandatoryPartLC +// From CSIPParameterHeaderBase: +// ----------------------------------------------------------------------------- +// +HBufC8* CSIPFromToHeaderBase::ToTextMandatoryPartLC () const + { + return iSIPAddress->ToTextLC(ETrue); + } + +// ----------------------------------------------------------------------------- +// CSIPFromToHeaderBase::ParseMandatoryPartL +// From CSIPParameterHeaderBase: +// ----------------------------------------------------------------------------- +// +void CSIPFromToHeaderBase::ParseMandatoryPartL (const TDesC8& aMandatoryPart) + { + CSIPAddress* sipAddress = CSIPAddress::DecodeL(aMandatoryPart); + CleanupStack::PushL(sipAddress); + SetSIPAddressL(sipAddress); + CleanupStack::Pop(sipAddress); + } + +// ----------------------------------------------------------------------------- +// CSIPFromToHeaderBase::Params +// From CSIPParameterHeaderBase: +// ----------------------------------------------------------------------------- +// +const CSIPParamContainerBase& CSIPFromToHeaderBase::Params () const + { + return *iParams; + } + +// ----------------------------------------------------------------------------- +// CSIPFromToHeaderBase::Params +// From CSIPParameterHeaderBase: +// ----------------------------------------------------------------------------- +// +CSIPParamContainerBase& CSIPFromToHeaderBase::Params () + { + return *iParams; + } +