realtimenetprots/sipfw/SigComp/CompDeflate/inc/SigCompDeflateContext.h
changeset 0 307788aac0a8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/realtimenetprots/sipfw/SigComp/CompDeflate/inc/SigCompDeflateContext.h	Tue Feb 02 01:03:15 2010 +0200
@@ -0,0 +1,338 @@
+/*
+* 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        : SigCompDeflate.h
+* Part of     : CDeflateComp
+* Interface   : 
+* compression context
+* Version     : 1.0
+*
+*/
+
+
+
+
+/**
+ @internalComponent
+*/
+
+
+#ifndef SIGCOMPCOMPDEFLATECONTEXT_H
+#define SIGCOMPCOMPDEFLATECONTEXT_H
+
+#include "SigCompCompressionContext.h"
+
+class TStateItem;
+
+/*
+* deflate compression context saved in compartment beetwen
+* CompressMessageL() calls.
+*/
+
+class CSigCompDeflateContext: public CSigCompCompressionContext
+    {
+    public:
+        CSigCompDeflateContext();
+
+        virtual ~CSigCompDeflateContext();
+
+        /** 
+         * save the window size for future use.
+         *
+         * @param aWindowSize window size
+         */
+        void SetWindowSize(TInt aWindowSize);
+
+        /** 
+         * return previously saved window size
+         *
+         * @returns window size
+         */
+        TInt WindowSize();
+
+        /** 
+         * save the current position for future use.
+         *
+         * @param aCurrentPosition current position
+         */
+        void SetCurrentPosition(TInt aCurrentPosition);
+
+        /** 
+         * return previously saved 'current position'
+         *
+         * @returns saved 'current position'
+         */
+        TInt CurrentPosition();
+
+        /** 
+         * save the window for future use. ownership is transfered
+         *
+         * @param aWindow window pointer
+         */
+        void SetWindow(CArrayFixFlat<TUint8>* aWindow);
+
+        /** 
+         * return saved window pointer.
+         *
+         * @returns window size
+         */
+        CArrayFixFlat<TUint8>* Window();
+
+        /**
+        * set dictionary state item
+        *
+        * @params aStateItem to be set
+        * @params aStateItemLength length of state item
+        */
+        void SetStateItem(TStateItem* aStateItem, TInt aStateItemLength);
+
+        /**
+        * get dictionary state item
+        *
+        * @returns state item, may be null.
+        */
+        TStateItem* StateItem();
+
+        /**
+        * get dictionary state item length
+        *
+        * @returns state item length
+        */
+        TInt StateItemLength();
+
+        /** 
+         * set bytecode confirmation
+         *
+         * @param aBytecodeStateConfirmed is bytecode state confirmed
+         *
+         */
+		void SetBytecodeStateConfirmed(TBool aBytecodeStateConfirmed);
+
+        /** 
+         * get bytecode confirmation
+         *
+         * @returns is bytecode state confirmed
+         *
+         */
+		TBool BytecodeStateConfirmed() const;
+
+        /** 
+         * set bytecode state hash
+         *
+         * @param aHash bytecode state hash
+         *
+         */
+		void SetBytecodeHash(const TUint8* aHash);
+
+        /** 
+         * get bytecode state hash
+         *
+         * @returns bytecode state hash
+         *
+         */
+		const TUint8* BytecodeHash() const;
+
+        /** 
+         * set circular buffer confirmation
+         *
+         * @param aStateConfirmed is circular buffer state confirmed
+         *
+         */
+        void SetCBStateConfirmed(TBool aStateConfirmed);
+
+        /** 
+         * get circular buffer confirmation
+         *
+         * @returns is circular buffer state confirmed
+         *
+         */
+		TBool CBStateConfirmed() const;
+
+        /** 
+         * set circular buffer state hash
+         *
+         * @param aHash circular buffer state hash
+         *
+         */
+        void SetCBStateHash(const TUint8* aHash);
+
+        /** 
+         * get circular buffer state hash
+         *
+         * @returns circular buffer state hash
+         *
+         */
+		const TUint8* CBStateHash() const;
+
+        /** 
+         * set circular buffer state length
+         *
+         * @param aLength circular buffer state length
+         *
+         */
+        void SetCBStateLength(TInt aLength);
+
+        /** 
+         * get circular buffer state length
+         *
+         * @returns circular buffer state length
+         *
+         */
+        TInt CBStateLength() const;
+
+        /**
+         * Set iUploadState flag
+         *
+         * @param aUploadState value to be set
+         *
+         */
+        void SetUploadState(TBool aUploadState);
+
+        /**
+         * get iUploadState
+         *
+         * @returns iUploadstate field
+         *
+         */
+        TBool UploadState();
+
+        /**
+        * returns ETrue if user state was already uploaded to the other side,
+        * EFalse if it was not.
+        *
+        * @returns iStateUploaded.
+        */
+        TBool StateUploaded();
+
+        /**
+        * set uploaded state flag
+        *
+        * @params aState state to be set
+        */
+        void SetStateUploaded(TBool aState);
+
+        /** 
+         * set remote state memory size
+         *
+         * @param aSms remote state memory size
+         *
+         */
+		void SetSms(TInt aSms);
+
+        /** 
+         * get remote state memory size
+         *
+         * @returns remote state memory size
+         *
+         */
+		TInt Sms() const;
+
+        /** 
+         * set decompression state memory size
+         *
+         * @param aDms remote decompression memory size
+         *
+         */
+		void SetDms(TInt aDms);
+
+        /** 
+         * get remote decompression memory size
+         *
+         * @returns remote decompression memory size
+         *
+         */
+		TInt Dms() const;
+
+
+        /** 
+         * set local udvm memory size
+         *
+         * @param aUdvmSize local udvm memory size
+         *
+         */
+        void SetUdvmSize(TInt aUdvmSize);
+
+        /** 
+         * get local udvm memory size
+         *
+         * @returns local udvm memory size
+         *
+         */
+   	    TInt UdvmSize() const;
+
+        /** 
+         * set local circular buffer size
+         *
+         * @param aCBSize local circular buffer size
+         *
+         */
+        void SetCBSize(TInt aCBSize);
+
+        /** 
+         * get local circular buffer size
+         *
+         * @returns local circular buffer size
+         *
+         */
+   	    TInt CBSize() const;
+
+    private:
+
+        /** should the state given by user be uploaded? */
+        TBool iUploadState;
+
+        /** dictionary state item */
+        TStateItem* iStateItem;
+
+        /** length of string part of dictionary state item */
+        TInt iStateItemLength;
+
+
+        /** current position within window, points to currently encoded char */
+        TInt iCurrentPosition;
+
+        /** size of window */
+        TInt iWindowSize;
+
+        /** compression window, dynamic dictionary*/
+        CArrayFixFlat<TUint8>* iWindow;
+        
+        /** hash id, used to determine whenever we lost sync or not*/
+        TUint8 iCBStateHash[6];
+        TInt iCBStateLength;
+
+        /** hash id, used to determine whenever we lost sync or not*/
+        TUint8 iBytecodeStateHash[6];
+
+        /** circular buffer state confirmed */
+        TBool iCBStateConfirmed;
+
+        /** bytecode state confirmed */
+        TBool iBytecodeStateConfirmed;
+
+        /** remote state memory size */
+		TInt iStateMemorySize;
+
+        /** remote decompression memory size */
+		TInt iDecompressionMemorySize;
+
+        /** local udvm memory size */
+        TInt iUdvmSize;
+
+        /** local circular buffer size */
+        TInt iCBSize;
+
+    };
+
+#endif