realtimenetprots/sipfw/SigComp/SigCompEngine/src/SigCompCompartment.cpp
changeset 0 307788aac0a8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/realtimenetprots/sipfw/SigComp/SigCompEngine/src/SigCompCompartment.cpp	Tue Feb 02 01:03:15 2010 +0200
@@ -0,0 +1,294 @@
+// 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.cpp
+// Part of     : SigComp
+// SigComp API frontend
+// Version     : 1.0
+//
+
+
+
+// INCLUDE FILES
+#include "Sigcomp.h"
+#include "Compressor.h"
+#include "sigcompstateitem.h"
+#include "StateMgr.h"
+#include "SigCompCompartmentStatesHolder.h"
+#include "SigCompCompressionContext.h"
+#include "sigcompcompartment.h"
+
+// ============================ MEMBER FUNCTIONS ==============================
+
+CSigCompCompartment::CSigCompCompartment()
+    {
+    }
+
+void CSigCompCompartment::ConstructL(const CSigComp& aSigComp,
+                                     TBool aDynamicCompression)
+    {
+
+    ConstructL(aSigComp, aSigComp.StateMemorySize(), aDynamicCompression);
+    }
+
+void CSigCompCompartment::ConstructL(const CSigComp& aSigComp,
+                                     CSigComp::TMemorySize aStateMemorySize,
+                                     TBool aDynamicCompression)
+    {
+
+    iSigComp = &aSigComp;
+    iStateMemorySize = aStateMemorySize;
+    iDynamicCompression = aDynamicCompression;
+
+    if(aDynamicCompression)
+        {
+        CSigCompCompressor* ci = const_cast<CSigCompCompressor*>(
+                                                       iSigComp->Compressor());
+        if(!ci->IsDynamicCompressionSupported())
+            {
+            User::Leave(KErrNotSupported);
+            }
+        }
+
+    iStateMgr = const_cast<CStateMgr*>(aSigComp.StateMgr());
+    iStatesHolder = new (ELeave)CSigCompCompartmentStatesHolder(*iStateMgr,
+                                                          iStateMemorySize);
+    iReturnedFeedback = HBufC8::NewL(0);
+    iRequestedFeedback = HBufC8::NewL(0);
+    iReturnedParameters = HBufC8::NewL(0);
+    }
+
+EXPORT_C CSigCompCompartment* CSigCompCompartment::NewL(
+                                                   const CSigComp& aSigComp,
+                                                   TBool aDynamicCompression)
+    {
+    CSigCompCompartment* self = NewLC(aSigComp, aDynamicCompression);
+    CleanupStack::Pop();
+
+    return self;
+    }
+
+EXPORT_C CSigCompCompartment* CSigCompCompartment::NewL(
+                                        const CSigComp& aSigComp,
+                                        CSigComp::TMemorySize aStateMemorySize,
+                                        TBool aDynamicCompression)
+    {
+
+    CSigCompCompartment* self = NewLC(aSigComp,
+                                      aStateMemorySize,
+                                      aDynamicCompression);
+    CleanupStack::Pop();
+
+    return self;
+    }
+
+
+EXPORT_C CSigCompCompartment* CSigCompCompartment::NewLC(
+                                                   const CSigComp& aSigComp,
+                                                   TBool aDynamicCompression)
+    {
+    CSigCompCompartment* self = new (ELeave)CSigCompCompartment;
+    
+    CleanupStack::PushL(self);
+    self->ConstructL(aSigComp, aDynamicCompression);
+
+    return self;
+    }
+
+EXPORT_C CSigCompCompartment* CSigCompCompartment::NewLC(
+                                        const CSigComp& aSigComp,
+                                        CSigComp::TMemorySize aStateMemorySize,
+                                        TBool aDynamicCompression)
+    {
+    CSigCompCompartment* self = new (ELeave)CSigCompCompartment;
+    
+    CleanupStack::PushL(self);
+    self->ConstructL(aSigComp, aStateMemorySize, aDynamicCompression);
+
+    return self;
+    }
+
+
+// Destructor
+EXPORT_C CSigCompCompartment::~CSigCompCompartment()
+    {
+
+    delete iCompressionContext;
+
+    delete iStatesHolder;
+
+    delete iReturnedFeedback;
+    delete iRequestedFeedback;
+    delete iReturnedParameters;
+    }
+
+
+// ----------------------------------------------------------------------------
+// CSigCompCompartment::CompressL
+// 
+// ----------------------------------------------------------------------------
+//
+
+EXPORT_C CBufBase* CSigCompCompartment::CompressL(const TDesC8& aMessage,
+                                                 TBool aForStreamBasedProtocol)
+    {
+    CSigCompCompressor* compressor = const_cast<CSigCompCompressor*>(
+                                                       iSigComp->Compressor());
+
+    CBufBase* msg = compressor->CompressMessageL(this, aMessage,
+                                           aForStreamBasedProtocol);
+    return msg;
+    }
+
+
+// ----------------------------------------------------------------------------
+// CSigCompCompartment::SetReturnedFeedbackL
+// set returned feedback in compartment
+// ----------------------------------------------------------------------------
+//
+
+void CSigCompCompartment::SetReturnedFeedbackL(const TDesC8& aReturnedFeedback)
+    {
+
+    delete iReturnedFeedback;
+    iReturnedFeedback = NULL;
+    iReturnedFeedback = aReturnedFeedback.AllocL();
+    }
+
+
+// ----------------------------------------------------------------------------
+// CSigCompCompartment::SetRequestedFeedbackL
+// set requested feedback in compartment
+// ----------------------------------------------------------------------------
+//
+
+void CSigCompCompartment::SetRequestedFeedbackL(
+                                              const TDesC8& aRequestedFeedback)
+    {
+
+    delete iRequestedFeedback;
+    iRequestedFeedback = NULL;
+    iRequestedFeedback = aRequestedFeedback.AllocL();
+    }
+
+
+// ----------------------------------------------------------------------------
+// CSigCompCompartment::SetReturnedParametersL
+// set returned parameters in compartment
+// ----------------------------------------------------------------------------
+//
+
+void CSigCompCompartment::SetReturnedParametersL(
+                                            const TDesC8& aReturnedParameters)
+    {
+
+    delete iReturnedParameters;
+    iReturnedParameters = NULL;
+    iReturnedParameters = aReturnedParameters.AllocL();
+    }
+
+// ----------------------------------------------------------------------------
+// CSigCompCompartment::StateMemorySize
+// get state memory size
+// ----------------------------------------------------------------------------
+//
+
+CSigComp::TMemorySize CSigCompCompartment::StateMemorySize() const
+    {
+    return iStateMemorySize;
+    };
+
+
+// ----------------------------------------------------------------------------
+// CSigCompCompartment::ReturnedFeedback
+// get returned feedback from compartment
+// ----------------------------------------------------------------------------
+//
+
+#if defined(SIGCOMP_DEBUG)
+EXPORT_C
+#endif
+const TDesC8& CSigCompCompartment::ReturnedFeedback() const
+    {
+    return *iReturnedFeedback;
+    }
+
+
+// ----------------------------------------------------------------------------
+// CSigCompCompartment::RequestedFeedback
+// set requested feedback in compartment
+// ----------------------------------------------------------------------------
+//
+
+#if defined(SIGCOMP_DEBUG)
+EXPORT_C
+#endif
+const TDesC8& CSigCompCompartment::RequestedFeedback() const
+    {
+    return *iRequestedFeedback;
+    }
+
+
+// ----------------------------------------------------------------------------
+// CSigCompCompartment::ReturnedParameters
+// get returned parameters from compartment
+// ----------------------------------------------------------------------------
+//
+
+#if defined(SIGCOMP_DEBUG)
+EXPORT_C
+#endif
+const TDesC8& CSigCompCompartment::ReturnedParameters() const
+    {
+    return *iReturnedParameters;
+    }
+
+// ----------------------------------------------------------------------------
+// CSigCompCompartment::StatesHolder
+// get states holder
+// ----------------------------------------------------------------------------
+//
+
+const CSigCompCompartmentStatesHolder*
+                                      CSigCompCompartment::StatesHolder() const
+    {
+    return iStatesHolder;
+    }
+
+const CSigCompCompressionContext*
+                                CSigCompCompartment::CompressionContext() const
+    {
+    return iCompressionContext;
+    }
+
+void CSigCompCompartment::SetCompressionContext(
+                          CSigCompCompressionContext* aContext)
+    {
+    iCompressionContext = aContext;
+    }
+
+TBool CSigCompCompartment::IsDynamicCompression() const
+    {
+    return iDynamicCompression;
+    }
+        
+CSigComp::TCyclesPerBit CSigCompCompartment::CyclesPerBit() const
+    {
+    return iSigComp->CyclesPerBit();
+    }
+
+
+CSigComp::TMemorySize CSigCompCompartment::DecompressionMemorySize() const
+    {
+    return iSigComp->DecompressionMemorySize();
+    }