diff -r 000000000000 -r 72b543305e3a messagingappbase/obexmtms/obexmtm/obexutil/source/obexinternalutils.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingappbase/obexmtms/obexmtm/obexutil/source/obexinternalutils.cpp Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,181 @@ +// Copyright (c) 2001-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: +// $Workfile: obexinternalutils.cpp $ +// $Author: Stevep $ +// $Revision: 3 $ +// $Date: 19/11/01 15:55 $ +// +// + +//class include +#include + +//system includes +#include //RReadStream, RWriteStream + +EXPORT_C void ObexInternalUtils::InternalizeL(HBufC*& aBuf, RReadStream& aStream) +/** + * Internalizes a HBufC from a stream. + * + * @param aBuf The HBufC to be internalized + * @param aStream The stream to be read from + * @leave KErrXXX Leaves with standard EPOC stream and memory allocation leave codes + */ + { + TInt length = aStream.ReadInt32L(); + delete aBuf; + aBuf = NULL; + aBuf = HBufC::NewL(aStream, length); + } + +EXPORT_C void ObexInternalUtils::ExternalizeL(const HBufC* aBuf, RWriteStream& aStream) +/** + * Externalizes a HBufC to a stream. + * + * @param aBuf The HBufC to be externalized + * @param aStream The stream to be written to + * @leave KErrXXX Leaves with standard EPOC stream leave codes + */ + { + aStream.WriteInt32L(aBuf->Length()); + aStream << *aBuf; + } + + +EXPORT_C void ObexInternalUtils::InternalizeL(HBufC8*& aBuf, RReadStream& aStream) +/** + * Internalizes a HBufC8 from a stream. + * + * @param aBuf The HBufC8 to be internalized + * @param aStream The stream to be read from + * @leave KErrXXX Leaves with standard EPOC stream and memory allocation leave codes + */ + { + TInt length = aStream.ReadInt32L(); + delete aBuf; + aBuf = NULL; + aBuf = HBufC8::NewL(aStream, length); + } + +EXPORT_C void ObexInternalUtils::ExternalizeL(const HBufC8* aBuf, RWriteStream& aStream) +/** + * Externalizes a HBufC8 to a stream. + * + * @param aBuf The HBufC8 to be externalized + * @param aStream The stream to be written to + * @leave KErrXXX Leaves with standard EPOC stream leave codes + */ + { + aStream.WriteInt32L(aBuf->Length()); + aStream << *aBuf; + } + + +EXPORT_C void ObexInternalUtils::InternalizeL(TDes& aDes, RReadStream& aStream) +/** + * Internalizes a TDes from a stream. + * + * @param aDes The TDes to be internalized + * @param aStream The stream to be read from + * @leave KErrXXX Leaves with standard EPOC stream and memory allocation leave codes + * @leave KErrOverflow if the incoming data is too big for the TBuf provided + */ + { + //read a HBufC from the stream + TInt length = aStream.ReadInt32L(); + HBufC* buf = HBufC::NewL(aStream, length); + CleanupStack::PushL(buf); + + //check it'll fit into aBuf + if (length <= aDes.MaxLength()) + { + //copy it into aDes + aDes.Copy(*buf); + } + else + { + //Doesn't fit so leave + User::Leave(KErrOverflow); + } + + CleanupStack::PopAndDestroy(); //buf + } + +EXPORT_C void ObexInternalUtils::ExternalizeL(const TDes& aDes, RWriteStream& aStream) +/** + * Externalizes a TDes to a stream. + * + * @param aBuf The TDes to be externalized + * @param aStream The stream to be written to + * @leave KErrXXX Leaves with standard EPOC stream leave codes + */ + { + aStream.WriteInt32L(aDes.Length()); + aStream << aDes; + } + + +EXPORT_C void ObexInternalUtils::InternalizeL(TDes8& aDes, RReadStream& aStream) +/** + * Internalizes a TDes8 from a stream. + * + * @param aBuf The TDes8 to be internalized + * @param aStream The stream to be read from + * @leave KErrXXX Leaves with standard EPOC stream and memory allocation leave codes + * @leave KErrOverflow if the incoming data is too big for the TBuf provided + */ + { + //read a HBufC from the stream + TInt length = aStream.ReadInt32L(); + HBufC8* buf = HBufC8::NewL(aStream, length); + CleanupStack::PushL(buf); + + //check it'll fit into aBuf + if (length <= aDes.MaxLength()) + { + //copy it into aDes + aDes.Copy(*buf); + } + else + { + //Doesn't fit so leave + User::Leave(KErrOverflow); + } + + CleanupStack::PopAndDestroy(); //buf + } + +EXPORT_C void ObexInternalUtils::ExternalizeL(const TDes8& aDes, RWriteStream& aStream) +/** + * Externalizes a TDes8 to a stream. + * + * @param aBuf The TDes8 to be externalized + * @param aStream The stream to be written to + * @leave KErrXXX Leaves with standard EPOC stream leave codes + */ + { + aStream.WriteInt32L(aDes.Length()); + aStream << aDes; + } + +EXPORT_C void ObexInternalUtils::Panic(ObexInternalUtils::TObexInternalUtilsPanic aPanic) +/** + * Indicates Panic originates from Obex MTM + * + * @param aPanic The type of TObexInternalUtilsPanic which has taken place + */ + { + _LIT(KPanicCategory, "ObexMTM"); + User::Panic(KPanicCategory, aPanic); + }