diff -r 000000000000 -r 307788aac0a8 realtimenetprots/sipfw/SigComp/SigCompEngine/api/sigcompcompartment.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/realtimenetprots/sipfw/SigComp/SigCompEngine/api/sigcompcompartment.h Tue Feb 02 01:03:15 2010 +0200 @@ -0,0 +1,330 @@ +/* +* Copyright (c) 2003-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 : SigCompCompartment.h +* Part of : SigComp / compartment +* Interface : +* sigcomp compartment class. +* Version : 1.0 +* +*/ + + + +#ifndef CSIGCOMPCOMPARTMENT_H +#define CSIGCOMPCOMPARTMENT_H + +// INCLUDES +#include +#include +#include + +// FORWARD DECLARATIONS +class CSigCompCompartmentStatesHolder; + +// CLASS DECLARATION +/** +* @publishedPartner +* @released +* +* @class CSigCompCompartment sigcompcompartment.h "sigcompcompartment.h" +* +* This class is used for compressing text-based protocol messages +* while communicating with a particular peer endpoint. +* +*/ +class CSigCompCompartment : public CBase, public MSigCompCompartmentContext + { + public: + /** + * Destructor + */ + + IMPORT_C ~CSigCompCompartment(); + + + /** + * Constructs an object; leaves on failure + * + * @param aSigComp the instance of SigComp under which the + * compartments are created. The compartment + * will use state memory size defined while + * creating SigComp instance. + * @param aDynamicCompression if set to ETrue, the compartment + * will use dynamic compression. + * + * @return new instance + * @leave KErrNotSupported if the dynamic compression was + * required but the algorithm does not support it. + */ + + IMPORT_C static CSigCompCompartment* NewL(const CSigComp& aSigComp, + TBool aDynamicCompression = EFalse); + + + + /** + * Constructs an object; leaves on failure. + * + * @param aSigComp the instance of SigComp under which the compartments + * are created. + * + * @param aStateMemorySize number of bytes offered for a compartment + * for the state creation. This overrides state + * memory size defined while creating SigComp + * instance. + * @param aDynamicCompression if set to ETrue, the compartment will use + * dynamic compression. + * + * @return new instance + * @leave KErrNotSupported if the compression algorithm does not + * support dynamic compression. + */ + + IMPORT_C static CSigCompCompartment* NewL(const CSigComp& aSigComp, + CSigComp::TMemorySize aStateMemorySize, + TBool aDynamicCompression = EFalse); + + + + /** + * Constructs an object and adds the pointer to the cleanup stack; + * leaves on failure. + * + * @param aSigComp the instance of SigComp under which the compartments + * are created. The compartment will use state memory + * size defined while creating SigComp instance. + * @param aDynamicCompression if set to ETrue, the compartment will + * use dynamic compression. + * + * @return new instance + * @leave KErrNotSupported if the compression algorithm does not + * support dynamic compression. + */ + + IMPORT_C static CSigCompCompartment* NewLC(const CSigComp& aSigComp, + TBool aDynamicCompression = EFalse); + + + /** + * Constructs an object and adds the pointer to the cleanup stack; + * leaves on failure. + * + * @param aSigComp the instance of SigComp under which the compartments + * are created. + * + * @param aStateMemorySize number of bytes offered for a compartment + * for the state creation. This overrides state + * memory size defined while creating SigComp + * instance. + * @param aDynamicCompression if set to ETrue, the compartment will use + * dynamic compression. + * + * @return new instance + * @leave KErrNotSupported if the compression algorithm does not + * support dynamic compression. + */ + + IMPORT_C static CSigCompCompartment* NewLC(const CSigComp& aSigComp, + CSigComp::TMemorySize aStateMemorySize, + TBool aDynamicCompression = EFalse); + + + /** + * Compress the message using the algorithm provided while + * creating the instance of the CSigComp class. + * + * @param aMessage a message to compress. + * + * @return Compressed message, ownership is transfered to the client. + * @leave ECompressionError if the compression fails. + */ + + IMPORT_C CBufBase* CompressL(const TDesC8& aMessage, + TBool aForStreamBasedProtocol = EFalse); + + + /** + * Get state memory size + * Internal use only + * + * @return state memory size + */ + + CSigComp::TMemorySize StateMemorySize() const; + + + /** + * Set returned feedback in compartment + * Internal use only + * Can leave if system resourcess missing (no memory for egz.) + * + * @param aReturnedFeedback a returned feedback + */ + +#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS +#if defined(SIGCOMP_DEBUG) + IMPORT_C +#endif +#endif + void SetReturnedFeedbackL(const TDesC8& aReturnedFeedback); + + + /** + * Set requested feedback in compartment + * Internal use only + * Can leave if system resourcess missing (no memory for egz.) + * + * @param aRequestedFeedback a requested feedback + */ + + void SetRequestedFeedbackL(const TDesC8& aRequestedFeedback); + + + /** + * Set returned parameters in compartment + * Internal use only + * Can leave if system resourcess missing (no memory for egz.) + * + * @param aReturnedParameters a returned parameters + */ + + void SetReturnedParametersL(const TDesC8& aReturnedParameters); + + /** + * Get returned feedback + * Internal use only + * + * @return returned feedback + */ +#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS +#if defined(SIGCOMP_DEBUG) + IMPORT_C +#endif +#endif + const TDesC8& ReturnedFeedback() const; + + /** + * Get requested feedback + * Internal use only + * + * @return requested feedback + */ +#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS +#if defined(SIGCOMP_DEBUG) + IMPORT_C +#endif +#endif + const TDesC8& RequestedFeedback() const; + + /** + * Get returned parameters + * Internal use only + * + * @return returned parameters + */ +#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS +#if defined(SIGCOMP_DEBUG) + IMPORT_C +#endif +#endif + const TDesC8& ReturnedParameters() const; + + /** + * Get compressor context + * Internal use only + * + * @return compressor context + */ + const CSigCompCompressionContext* CompressionContext() const; + + /** + * Set compressor context + * Internal use only + * + * @param aPrivateData compressor context + */ + void SetCompressionContext(CSigCompCompressionContext* aContext); + + /** + * Get states holder + * Internal use only + * + * @return states holder + */ + const CSigCompCompartmentStatesHolder* StatesHolder() const; + + /** + * Get type of compression (dynamic or not) + * + * @return ETrue for dynamic compression, EFalse for static). + */ + TBool IsDynamicCompression() const; + + /** + * Get cycles per bit + * + * @return Cycles per bit + */ + CSigComp::TCyclesPerBit CyclesPerBit() const; + + /** + * Get decompression memory size + * + * @return Decompression memory size + */ + CSigComp::TMemorySize DecompressionMemorySize() const; + + private: + + CSigCompCompartment(); + + void ConstructL(const CSigComp& aSigComp, + TBool aDynamicCompression = EFalse); + + void ConstructL(const CSigComp& aSigComp, + CSigComp::TMemorySize aStateMemorySize, + TBool aDynamicCompression = EFalse); + + private: + + /** sigcomp instance */ + const CSigComp* iSigComp; + + /** is dynamic compression */ + TBool iDynamicCompression; + + /** state memory size */ + CSigComp::TMemorySize iStateMemorySize; + + /** state manager */ + CStateMgr* iStateMgr; + + /** returned feedback */ + HBufC8* iReturnedFeedback; + + /** requested feedback */ + HBufC8* iRequestedFeedback; + + /** returned parameters */ + HBufC8* iReturnedParameters; + + /** compression context */ + CSigCompCompressionContext* iCompressionContext; + + /** states holder */ + CSigCompCompartmentStatesHolder* iStatesHolder; + }; + +#endif // CSIGCOMPCOMPARTMENT_H