realtimenetprots/sipfw/SIP/SigCompController/DefaultPlugin/src/sipsigcompcompartmentuser.cpp
changeset 0 307788aac0a8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/realtimenetprots/sipfw/SIP/SigCompController/DefaultPlugin/src/sipsigcompcompartmentuser.cpp	Tue Feb 02 01:03:15 2010 +0200
@@ -0,0 +1,184 @@
+// Copyright (c) 2005-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          : sipsigcompcompartmentuser.cpp
+// Part of       : SIPSigComp
+// Version       : SIP/4.0 
+//
+
+
+
+#include "sipsigcompcompartmentuser.h"
+#include "sipsigcompcompartmentctx.h"
+#include "MCompartmentUserOwner.h"
+
+// -----------------------------------------------------------------------------
+// CSipSigCompCompartmentUser::NewL
+// -----------------------------------------------------------------------------
+//
+CSipSigCompCompartmentUser* CSipSigCompCompartmentUser::NewL(
+    MCompartmentUserOwner& aMyOwner,
+    TUint32 aCompartmentId,
+	TUint32 aIapId,
+	TBool aDynamicCompression )
+	{
+	CSipSigCompCompartmentUser* self = 
+	    CSipSigCompCompartmentUser::NewLC( aMyOwner, 
+	                                       aCompartmentId,
+	                                       aIapId, 
+	                                       aDynamicCompression );
+	CleanupStack::Pop();
+	return self;
+	}
+
+
+// -----------------------------------------------------------------------------
+// CSipSigCompCompartmentUser::NewLC
+// -----------------------------------------------------------------------------
+//
+CSipSigCompCompartmentUser* CSipSigCompCompartmentUser::NewLC(
+    MCompartmentUserOwner& aMyOwner,
+    TUint32 aCompartmentId,
+	TUint32 aIapId,
+	TBool aDynamicCompression )
+	{
+	CSipSigCompCompartmentUser* self = 
+	    new ( ELeave ) CSipSigCompCompartmentUser( aMyOwner, 
+	                                               aCompartmentId, 
+	                                               aIapId,
+	                                               aDynamicCompression );
+	CleanupStack::PushL( self );
+	self->ConstructL();
+	return self;
+	}
+
+// -----------------------------------------------------------------------------
+// CSipSigCompCompartmentUser::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CSipSigCompCompartmentUser::ConstructL()
+	{
+	}
+
+// -----------------------------------------------------------------------------
+// CSipSigCompCompartmentUser::~CSipSigCompCompartmentUser
+// -----------------------------------------------------------------------------
+//
+CSipSigCompCompartmentUser::~CSipSigCompCompartmentUser()
+	{
+	if ( iCompartmentCtx )
+	    {
+	    iCompartmentCtx->DetachCompartmentUser( this );
+	    }
+	}
+    
+// -----------------------------------------------------------------------------
+// CSipSigCompCompartmentUser::CompartmentDeleted
+// -----------------------------------------------------------------------------
+//
+void CSipSigCompCompartmentUser::CompartmentDeleted()
+    {
+    // Cannot use ctx anymore
+    iCompartmentCtx = 0;
+    }
+    
+// -----------------------------------------------------------------------------
+// CSipSigCompCompartmentUser::Compartment
+// -----------------------------------------------------------------------------
+//
+CSigCompCompartment* CSipSigCompCompartmentUser::Compartment()
+	{
+	if ( iCompartmentCtx )
+	    {
+	    return iCompartmentCtx->Compartment();
+	    }
+	return 0;
+	}
+
+// -----------------------------------------------------------------------------
+// CSipSigCompCompartmentUser::SetAddressL
+// -----------------------------------------------------------------------------
+//
+void CSipSigCompCompartmentUser::SetAddressL( const TInetAddr& aAddress )
+	{
+	CSipSigCompCompartmentCtx* compCtx = 
+	        iMyOwner.SearchCompartmentByInetAddr( aAddress, iIapId );
+	
+    if ( compCtx )
+        {
+        if ( iCompartmentCtx && iCompartmentCtx != compCtx )
+            {
+            // Change compartment, first detach from old compartment
+            iCompartmentCtx->DetachCompartmentUser( this );
+            }
+        }
+    else
+        {
+        // Create new compartment because there wasn't any for this
+        // remote addr
+        compCtx = 
+            iMyOwner.CreateCompartmentL( aAddress, iIapId, iDynamicCompression );
+        }
+    
+    iCompartmentCtx = compCtx;
+    
+    // Attach to compartment, no effect if already attached
+    iCompartmentCtx->AttachCompartmentUserL( this ); 
+	}
+
+// -----------------------------------------------------------------------------
+// CSipSigCompCompartmentUser::Match
+// -----------------------------------------------------------------------------
+//
+TBool CSipSigCompCompartmentUser::Match( const TInetAddr& aAddress ) const
+	{
+	return ( iCompartmentCtx && iCompartmentCtx->Match( aAddress, iIapId ) );
+	}
+	
+// -----------------------------------------------------------------------------
+// CSipSigCompCompartmentUser::Match
+// -----------------------------------------------------------------------------
+//
+TBool CSipSigCompCompartmentUser::Match( TUint32 aCompartmentId ) const
+    {
+    return ( iCompartmentId == aCompartmentId );
+    }
+	
+// -----------------------------------------------------------------------------
+// CSipSigCompCompartmentUser::SendFailedL
+// -----------------------------------------------------------------------------
+//
+void CSipSigCompCompartmentUser::SendFailedL()
+    {
+    if ( iCompartmentCtx )
+        {
+        iCompartmentCtx->SendFailedL();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// Constructor
+// -----------------------------------------------------------------------------
+//
+CSipSigCompCompartmentUser::CSipSigCompCompartmentUser(
+    MCompartmentUserOwner& aMyOwner,
+    TUint32 aCompartmentId,
+	TUint32 aIapId,
+	TBool aDynamicCompression ) : 
+    iMyOwner( aMyOwner ), 
+    iCompartmentId( aCompartmentId ),
+    iIapId( aIapId ),
+    iDynamicCompression( aDynamicCompression )
+	{
+	}
+