Msrp/MsrpServer/inc/CMSRPConnectionManager.h
author shivsood
Sat, 12 Jun 2010 14:30:11 +0530
branchMSRP_FrameWork
changeset 25 505ad3f0ce5c
child 58 cdb720e67852
permissions -rw-r--r--
MSRP Chat and File Sharing FrameWork - Initial Contribution from Nokia. MSRP Implementation as per RFC 4975 and RCS specifications that supports 1. Multiple one to one chat data sessions as per RCS/RFC 4975 specifications. 2. Multiple file Sharing sessions as per RCS. 3. Data Chunking requirements as per 4975. 3. MSRP Connection sharing requirements as per RFC 4975

/*
* 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
*
*/

#ifndef CMSRPCONNECTIONMANAGER_H
#define CMSRPCONNECTIONMANAGER_H

// INCLUDES
#include "MMSRPConnectionManager.h"
#include "MMSRPConnectionManagerObserver.h"
#include "MMSRPListenerObserver.h"
#include "MMSRPListener.h"
#include "MMSRPConnection.h"


// FORWARD DECLARATIONS
class MMSRPConnectionManagerObserver;
class MMSRPConnection;

// CLASS DECLARATION

/**
*  MSRP Connection Manager
*/
class CMSRPConnectionManager : public CBase, public MMSRPConnectionManager
										, public MMSRPListenerObserver
    {
    
    public:  
        
    /* Constructors and destructor*/
    
        static CMSRPConnectionManager* NewL( const TUint32 aIapID, MMSRPConnectionManagerObserver& aServer );
        
        virtual ~CMSRPConnectionManager();


    /*Functions from base classes*/   
        /* from MMSRPConnectionManager*/
        
        virtual void ResolveLocalIPAddressL( TInetAddr& aLocalAddr );
       
        virtual MMSRPConnection& getConnectionL( TDesC8& aHost, TUint aPort );
          
        
     //called by conn   
        virtual void ListenL(MMSRPConnection* aConnection);
        
        virtual void ListenCancel(MMSRPConnection* aConnection);
        
        virtual void Remove(MMSRPConnection* aConnection);
	    
        virtual RSocketServ& SocketServer();	            
	    
        virtual RConnection& SocketServerConn() ;        
        
        //virtual TBool MatchIapId(TUint32 aIapID);
        
        
        /* from MMSRPListenerObserver  */
        virtual void ListenerStateL( TInt aNewState, RSocket* aDataSocket, TInt aStatus );
                
        

	private: 
	    
    // internal functions
	    /**
	     *  remote address resolution
	     */
	    void ResolveIPAddressL( const TDesC8& aHost, TInetAddr& aAddress );
	    
	    /**
	     * check if we have a connection to the same host and port
	     */
	    MMSRPConnection* CheckConnection( TInetAddr& aHostAddress ,TBool aListenOnly);
	    
	    /**
	     * start up the connection on iap 
	     */
	    TInt StartInterface();
	    

	// constructors

	    CMSRPConnectionManager( const TUint32 aIapID, MMSRPConnectionManagerObserver& aServer );
        
        void ConstructL();

	private: // data

	    RPointerArray<MMSRPConnection> iConnectionArray;
		MMSRPListener* iConnListener;
				
		RSocketServ       iSocketServer;
		RConnection       iConnection;	
		RHostResolver     iHostResolver;
		TUint32           iIapID;
		TInetAddr         iLocalAddr;
		
		MMSRPConnectionManagerObserver& iObserver;
    };

#endif      // CMSRPCONNECTIONMANAGER_H

// End of File