Msrp/MsrpClient/src/CMSRPImplementation.cpp
branchMSRP_FrameWork
changeset 25 505ad3f0ce5c
child 58 cdb720e67852
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Msrp/MsrpClient/src/CMSRPImplementation.cpp	Sat Jun 12 14:30:11 2010 +0530
@@ -0,0 +1,117 @@
+/*
+* Copyright (c) 2009-2010 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:
+* MSRP Implementation
+*
+*/
+
+
+//  Include Files	
+#include "MsrpCommon.h"
+#include "RMSRP.h"
+#include "CMSRPSession.h"
+#include "CMSRPImplementation.h"
+#include "MMSRPSessionObserver.h"
+
+
+//  Member Functions 
+
+CMSRPImplementation* CMSRPImplementation::NewL( const TUid& aUid )
+	{
+	MSRPLOG("CMSRP Impl.. NewL");
+	CMSRPImplementation* self = CMSRPImplementation::NewLC(aUid);
+	CleanupStack::Pop(self);
+	return self;
+	}
+ 
+
+CMSRPImplementation* CMSRPImplementation::NewLC( const TUid& aUid )
+    {
+    MSRPLOG("CMSRP Impl.. NewLC");
+    CMSRPImplementation* self = new (ELeave) CMSRPImplementation(aUid);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    return self;
+    }
+  
+
+void CMSRPImplementation::ConstructL()
+	{
+	MSRPLOG("CMSRP Impl.. ConstructL");
+	iMSRP = new ( ELeave ) RMSRP();
+	User::LeaveIfError(iMSRP->CreateServerSession());	
+	}
+
+
+CMSRPImplementation::CMSRPImplementation( const TUid& aUid )
+    :iUid(aUid)
+    {
+    MSRPLOG("CMSRP Impl.. Ctor");
+    }
+
+
+CMSRPImplementation::~CMSRPImplementation()
+	{
+	MSRPLOG("CMSRP Impl.. Dtor");
+	
+	if( iMSRPSessionsArray.Count() )
+	    {
+        for(TUint i=0; i<iMSRPSessionsArray.Count(); i++)
+            {
+            delete iMSRPSessionsArray[i];
+            }
+	    }
+	
+	iMSRPSessionsArray.Close();
+	iMSRP->Close();
+	delete iMSRP;	
+	
+	}
+ 
+ 
+CMSRPSession* CMSRPImplementation::CreateMSRPSessionL( MMSRPSessionObserver& aObserver,
+                                                       const TUint aIapId )
+	{
+	// Creates and Returns a MSRP Session. 
+	// No paramers are taken at this stage. Primarily because 
+	// this is the first step the MSRP user is expected to do before 
+	// SDP negotiation. 
+	// At this stage the user expects to get the session-id, 
+	// avaible trasport etc. 
+	
+	MSRPLOG("CMSRP Impl.. Create MSRP session");
+
+	CMSRPSession* msrpSession 
+	 			= CMSRPSession::NewL( *iMSRP, aObserver, aIapId );
+
+	// CMSRPImplementation would like to keep a tab on number of MSRP sessions 
+	// that it is serving.Append the MSRPSession to a session array.
+	
+	iMSRPSessionsArray.AppendL(msrpSession);
+
+	return msrpSession;
+		 
+	}
+ 
+ 
+void CMSRPImplementation::CloseMSRPSession( CMSRPSession* aMsrpSession )
+    {
+   
+    MSRPLOG("CMSRP Impl.. Close MSRP session");
+    
+    TInt index = iMSRPSessionsArray.Find(aMsrpSession);
+    
+    delete iMSRPSessionsArray[index];
+    iMSRPSessionsArray.Remove(index);       
+        
+    }
+