diff -r 000000000000 -r 307788aac0a8 realtimenetprots/sipfw/SIP/ConnectionMgr/inc/MSigCompHandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/realtimenetprots/sipfw/SIP/ConnectionMgr/inc/MSigCompHandler.h Tue Feb 02 01:03:15 2010 +0200 @@ -0,0 +1,170 @@ +/* +* 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 : MSigCompHandler.h +* Part of : ConnectionMgr +* Version : SIP/4.0 +* +*/ + + + +#ifndef __MSIGCOMPHANDLER_H__ + +/** +* @internalComponent +*/ +#define __MSIGCOMPHANDLER_H__ + +#include +#include "SipHostPort.h" + + +/** + * Interface class for sigcomp handler. + */ +class MSigCompHandler + { + public: + + /** + * Destructor. + */ + virtual ~MSigCompHandler () {} + + /** + * After calling this function Connection Mgr always uses + * signalling compression for requests sent to this host. + * Multiple users can share a compression to a given host. + * This is implemented as a reference count. + * If a compression already exists, the referrence count is + * incremented by one. + * + * @param aHostPort for which all the outgoing requests should be sent + * compressed. + */ + virtual void UseL (const CSIPHostPort& aHostPort) = 0; + + /** + * Decrements the reference count to a initiated compression. + * When reference count reaches zero, + * the compression for this host is stopped. + * If no compression for the host was found, the function silently returns. + * + * @param aHostPort for which to unuse compression. + */ + virtual void UnUse (const CSIPHostPort& aHostPort) = 0; + + /** + * Decompress the message; leaves on failure. + * + * SigComp specífic leave codes: + * EDecompressionFailure - the decompressor failed to decompress the + * message. + * EIncompleteMessage - the SigComp message was incomplete + * The function expects the client to provide complete SigComp message. + * + * @pre IsSigCompMsg()==ETrue + * + * @param aMessage a message to decompress. The message must start with + * SigComp specific delimeter and end with SigComp specific + * delimeter + * + * @param aBytesConsumed on return will contain the number of bytes + * consumed by the decompression from the original + message + * @returns decompressed message, the ownership is transferred + */ + virtual HBufC8* + DecompressL(const TDesC8& aMessage, TUint& aBytesConsumed) = 0; + + /** + * Compress the message using the algorith provided while + * creating the instance of the CSigComp class. + * + * Leaves with CSigComp::TError::ECompressionError error code if the + * compression fails. + * Leaves with KErrNotFound error code if compartment is not found. + * + * @param aMessage a message to compress. + * + * @param aAddress A remote destination address + * + * @param aSIPHostPort The host where message will be sent after + * compression. + * The hostport identifies the compartment that will be used for + * compression. + * + * @returns Compressed message, ownership is transfered to the client. + */ + virtual HBufC8* CompressL(const TDesC8& aMessage, TInetAddr aAddress, + const CSIPHostPort& aHostPort, + TBool aStreamBasedProtocol) = 0; + + /** + * Checks if the message contains the delimeter indicating SigComp + * message end. This function must be used only with stream-based + * transports, otherwise it will always return EFalse. + * + * @pre IsSigCompMsg()==ETrue + * + * @returns ETrue is the SigComp message is complete, EFalse otherwise + */ + virtual TBool IsCompleteSigCompMessageL(const TDesC8& aMessage) const = 0; + + + /** + * Checks if the first byte contains bit pattern indicating the start + * of the SigComp message. Function examines only the first byte. + * + * @returns ETrue if the first byte indicates the start of the SigComp + * message, EFalse otherwise + */ + virtual TBool IsSigCompMsg(const TDesC8& aMessage) const = 0; + + /** + * Checks if signalling compression is installed. + * + * @returns ETrue if installed, EFalse otherwise. + */ + virtual TBool Available() const = 0; + + /** + * Allows the state of the decompressed message to be saved; leaves on + * failure. + * + * @param aAddress A remote destination address + * + * @param aHostPort A host port + */ + virtual void AllowL(TInetAddr aAddr, const CSIPHostPort& aHostPort) = 0; + + /** + * Denies the state of the message to be saved. + */ + virtual void Deny() = 0; + + /** + * Checks if hostport has compartment already + * + * @param aHostPort A host port + * + * @returns ETrue if compartment exists + */ + virtual TBool HasCompartment(const CSIPHostPort& aHostPort) = 0; +}; + +#endif // end of __MSIGCOMPHANDLER_H__ + +// End of File