realtimenetprots/sipfw/SIP/ConnectionMgr/inc/MSigCompHandler.h
changeset 0 307788aac0a8
--- /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 <in_sock.h>
+#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