diff -r f1578314b8da -r 505ad3f0ce5c Msrp/MsrpHeader/src/CMsrpFailureReportHeader.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Msrp/MsrpHeader/src/CMsrpFailureReportHeader.cpp Sat Jun 12 14:30:11 2010 +0530 @@ -0,0 +1,197 @@ +/* +* 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 "CMsrpFailureReportHeader.h" + +// EXTERNAL INCLUDES + +// INTERNAL INCLUDES +#include "msrpstrings.h" +#include "msrpstrconsts.h" + +// ----------------------------------------------------------------------------- +// CMSRPFailureReportHeader::NewLC +// ----------------------------------------------------------------------------- +// +EXPORT_C CMSRPFailureReportHeader* CMSRPFailureReportHeader::NewLC( + const RStringF& aType ) + { + CMSRPFailureReportHeader* self = new (ELeave) CMSRPFailureReportHeader(); + CleanupStack::PushL( self ); + self->ConstructL( aType ); + return self; + } + +// ----------------------------------------------------------------------------- +// CMSRPFailureReportHeader::NewL +// ----------------------------------------------------------------------------- +// +EXPORT_C CMSRPFailureReportHeader* CMSRPFailureReportHeader::NewL( + const RStringF& aType ) + { + CMSRPFailureReportHeader* self = CMSRPFailureReportHeader::NewLC( aType ); + CleanupStack::Pop( self ); + return self; + } + +// ----------------------------------------------------------------------------- +// CMSRPFailureReportHeader::NewL +// ----------------------------------------------------------------------------- +// +CMSRPFailureReportHeader* CMSRPFailureReportHeader::NewL( ) + { + CMSRPFailureReportHeader* self = new (ELeave) CMSRPFailureReportHeader(); + CleanupStack::PushL( self ); + self->ConstructL( ); + CleanupStack::Pop( self ); + return self; + } + +// ----------------------------------------------------------------------------- +// CMSRPFailureReportHeader::CMSRPFailureReportHeader +// ----------------------------------------------------------------------------- +// +CMSRPFailureReportHeader::CMSRPFailureReportHeader() + { + } + +// ----------------------------------------------------------------------------- +// CMSRPFailureReportHeader::ConstructL +// ----------------------------------------------------------------------------- +// +void CMSRPFailureReportHeader::ConstructL( + RStringF aType ) + { + MSRPStrings::OpenL(); + iReportType = aType.Copy(); + } + +// ----------------------------------------------------------------------------- +// CMSRPFailureReportHeader::ConstructL +// ----------------------------------------------------------------------------- +// +void CMSRPFailureReportHeader::ConstructL( ) + { + MSRPStrings::OpenL(); + } + +// ----------------------------------------------------------------------------- +// CMSRPFailureReportHeader::~CMSRPFailureReportHeader +// ----------------------------------------------------------------------------- +// +EXPORT_C CMSRPFailureReportHeader::~CMSRPFailureReportHeader() + { + MSRPStrings::Close(); + } + +// ----------------------------------------------------------------------------- +// CMSRPFailureReportHeader::InternalizeValueL +// ----------------------------------------------------------------------------- +// +EXPORT_C CMSRPFailureReportHeader* CMSRPFailureReportHeader::InternalizeValueL( + RReadStream& aReadStream ) + { + CMSRPFailureReportHeader* self = CMSRPFailureReportHeader::NewL( ); + CleanupStack::PushL( self ); + self->DoInternalizeValueL( aReadStream ); + CleanupStack::Pop( self ); + return self; + } + +// ----------------------------------------------------------------------------- +// CMSRPFailureReportHeader::DoInternalizeValueL +// ----------------------------------------------------------------------------- +// +void CMSRPFailureReportHeader::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 + { + RStringF tmpStr = MSRPStrings::StringF( MSRPStrConsts::EPartial ); + if( tmpStr.DesC() == tempValue ) + { + // OK + iReportType = tmpStr.Copy(); + } + else + { + // not supported + CleanupStack::PopAndDestroy( tempBuffer ); + User::Leave( KErrNotSupported ); + } + } + } + CleanupStack::PopAndDestroy( tempBuffer ); + } + } + +// ----------------------------------------------------------------------------- +// CMSRPFailureReportHeader::ExternalizeValueL +// From CSIPHeaderBase: +// ----------------------------------------------------------------------------- +// +void CMSRPFailureReportHeader::ExternalizeValueL( RWriteStream& aWriteStream ) const + { + aWriteStream.WriteInt32L( iReportType.DesC().Length() ); + aWriteStream.WriteL( iReportType.DesC() ); + } + +// ----------------------------------------------------------------------------- +// CMSRPFailureReportHeader::Name +// ----------------------------------------------------------------------------- +// +RStringF CMSRPFailureReportHeader::Name() const + { + return MSRPStrings::StringF( MSRPStrConsts::EFailureReport ); + } + +// ----------------------------------------------------------------------------- +// CMSRPFailureReportHeader::ToTextValueL +// ----------------------------------------------------------------------------- +// +HBufC8* CMSRPFailureReportHeader::ToTextValueL() const + { + if( iReportType.DesC().Length() ) + { + return iReportType.DesC().AllocL(); + } + return NULL; + } + +// End of File