diff -r f1578314b8da -r 505ad3f0ce5c Msrp/MsrpHeader/src/CMsrpSuccessReportHeader.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Msrp/MsrpHeader/src/CMsrpSuccessReportHeader.cpp Sat Jun 12 14:30:11 2010 +0530 @@ -0,0 +1,186 @@ +/* +* Copyright (c) 2009-2010 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: +* MSRP Implementation +* +*/ + +// CLASS HEADER +#include "CMsrpSuccessReportHeader.h" + +// INTERNAL INCLUDES +#include "msrpstrings.h" +#include "msrpstrconsts.h" + +// ----------------------------------------------------------------------------- +// CMSRPSuccessReportHeader::NewLC +// ----------------------------------------------------------------------------- +// +EXPORT_C CMSRPSuccessReportHeader* CMSRPSuccessReportHeader::NewLC( + const RStringF& aType ) + { + CMSRPSuccessReportHeader* self = new (ELeave) CMSRPSuccessReportHeader(); + CleanupStack::PushL( self ); + self->ConstructL( aType ); + return self; + } + +// ----------------------------------------------------------------------------- +// CMSRPSuccessReportHeader::NewL +// ----------------------------------------------------------------------------- +// +EXPORT_C CMSRPSuccessReportHeader* CMSRPSuccessReportHeader::NewL( + const RStringF& aType ) + { + CMSRPSuccessReportHeader* self = CMSRPSuccessReportHeader::NewLC( aType ); + CleanupStack::Pop( self ); + return self; + } + +// ----------------------------------------------------------------------------- +// CMSRPSuccessReportHeader::NewL +// ----------------------------------------------------------------------------- +// +CMSRPSuccessReportHeader* CMSRPSuccessReportHeader::NewL( ) + { + CMSRPSuccessReportHeader* self = new (ELeave) CMSRPSuccessReportHeader(); + CleanupStack::PushL( self ); + self->ConstructL( ); + CleanupStack::Pop( self ); + return self; + } + +// ----------------------------------------------------------------------------- +// CMSRPSuccessReportHeader::CMSRPSuccessReportHeader +// ----------------------------------------------------------------------------- +// +CMSRPSuccessReportHeader::CMSRPSuccessReportHeader() + { + } + +// ----------------------------------------------------------------------------- +// CMSRPSuccessReportHeader::ConstructL +// ----------------------------------------------------------------------------- +// +void CMSRPSuccessReportHeader::ConstructL( + RStringF aType ) + { + MSRPStrings::OpenL(); + iReportType = aType.Copy(); + } + +// ----------------------------------------------------------------------------- +// CMSRPSuccessReportHeader::ConstructL +// ----------------------------------------------------------------------------- +// +void CMSRPSuccessReportHeader::ConstructL( ) + { + MSRPStrings::OpenL(); + } + +// ----------------------------------------------------------------------------- +// CMSRPSuccessReportHeader::~CMSRPSuccessReportHeader +// ----------------------------------------------------------------------------- +// +EXPORT_C CMSRPSuccessReportHeader::~CMSRPSuccessReportHeader() + { + MSRPStrings::Close(); + } + +// ----------------------------------------------------------------------------- +// CMSRPSuccessReportHeader::InternalizeValueL +// ----------------------------------------------------------------------------- +// +EXPORT_C CMSRPSuccessReportHeader* CMSRPSuccessReportHeader::InternalizeValueL( + RReadStream& aReadStream ) + { + CMSRPSuccessReportHeader* self = CMSRPSuccessReportHeader::NewL( ); + CleanupStack::PushL( self ); + self->DoInternalizeValueL( aReadStream ); + CleanupStack::Pop( self ); + return self; + } + +// ----------------------------------------------------------------------------- +// CMSRPSuccessReportHeader::DoInternalizeValueL +// ----------------------------------------------------------------------------- +// +void CMSRPSuccessReportHeader::DoInternalizeValueL( RReadStream& aReadStream ) + { + // value must be in stringpool + TUint32 valueLength = aReadStream.ReadUint32L(); + if( valueLength > 0 ) + { + HBufC8* tempBuffer = HBufC8::NewLC( valueLength ); + TPtr8 tempValue( tempBuffer->Des() ); + aReadStream.ReadL( tempValue, valueLength ); + + // let's check if the value matches the supported content-types + RStringF tempString = MSRPStrings::StringF( MSRPStrConsts::EYes ); + if( tempString.DesC() == tempValue ) + { + // OK + iReportType = tempString.Copy(); + } + else + { + RStringF tempStr = MSRPStrings::StringF( MSRPStrConsts::ENo ); + if( tempStr.DesC() == tempValue ) + { + // OK + iReportType = tempStr.Copy(); + } + else + { + // not supported + CleanupStack::PopAndDestroy( tempBuffer ); + User::Leave( KErrNotSupported ); + } + } + CleanupStack::PopAndDestroy( tempBuffer ); + } + } + +// ----------------------------------------------------------------------------- +// CMSRPSuccessReportHeader::ExternalizeValueL +// From CSIPHeaderBase: +// ----------------------------------------------------------------------------- +// +void CMSRPSuccessReportHeader::ExternalizeValueL( RWriteStream& aWriteStream ) const + { + aWriteStream.WriteInt32L( iReportType.DesC().Length() ); + aWriteStream.WriteL( iReportType.DesC() ); + } + +// ----------------------------------------------------------------------------- +// CMSRPFailureReportHeader::Name +// ----------------------------------------------------------------------------- +// +RStringF CMSRPSuccessReportHeader::Name() const + { + return MSRPStrings::StringF( MSRPStrConsts::ESuccessReport ); + } + +// ----------------------------------------------------------------------------- +// CMSRPFailureReportHeader::ToTextValueL +// ----------------------------------------------------------------------------- +// +HBufC8* CMSRPSuccessReportHeader::ToTextValueL() const + { + if( iReportType.DesC().Length() ) + { + return iReportType.DesC().AllocL(); + } + return NULL; + } + +// End of File