upnpavcontrolpoint/avcpengine/src/upnpavcpmanager.cpp
branchIOP_Improvements
changeset 40 08b5eae9f9ff
parent 39 6369bfd1b60d
child 41 b4d83ea1d6e2
--- a/upnpavcontrolpoint/avcpengine/src/upnpavcpmanager.cpp	Mon Nov 01 13:44:24 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,324 +0,0 @@
-/** @file
-* Copyright (c) 2005-2006 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:  CUpnpAVCPManager
-*
-*/
-
-
-// INCLUDE FILES
-
-#include "upnpavcpmanager.h"
-#include "upnpavcpenginehelper.h"
-#include "upnppathresolver.h"
-#include "upnpresponsehandler.h"
-#include "upnpmdebug.h"
-#include "upnpavcpenginecommon.h"
-
-
-
-// -----------------------------------------------------------------------------
-// CUpnpAVCPManager::NewL
-// Creates an instance of the implementation.
-// -----------------------------------------------------------------------------
-CUpnpAVCPManager* CUpnpAVCPManager::NewL()
-	{ 
-	CUpnpAVCPManager* self = new (ELeave) CUpnpAVCPManager(NULL);
-	CleanupStack::PushL( self );
-	self->ConstructL();
-	CleanupStack::Pop( self );
-	return self;
-	}
-
-// -----------------------------------------------------------------------------
-// CUpnpAVCPManager::CUpnpAVCPManager
-// First phase construction.
-// -----------------------------------------------------------------------------
-CUpnpAVCPManager::CUpnpAVCPManager(MUpnpAVControlPointObserver* aObserver):CUpnpAVControlPoint((MUpnpAVControlPointObserver&)aObserver)
-	{
-    
-	}
-
-// -----------------------------------------------------------------------------
-// CUpnpAVCPManager::ConstructL
-// Second phase construction.
-// -----------------------------------------------------------------------------
-void CUpnpAVCPManager::ConstructL()
-	{	    
-    
-    _LIT8( KMediaServer, "MediaServer" );
-	//CUpnpControlPoint::ConstructL( KMediaServer, value );	
-	CUpnpControlPoint::ConstructL( KMediaServer );	
-	InitializeCdsActionFactoryL();
-        
-	// maybe we should look for something different??
-	TPtrC8 devicePtr;
-    devicePtr.Set( UpnpSSDP::KSearchTargetAll );
-    //SSDP search for mediaserver UPnP devices
-	DEBUGSTRING(("Search for devices"));    
-	SearchL( devicePtr );
-	}
-
-// -----------------------------------------------------------------------------
-// Destructor.
-// -----------------------------------------------------------------------------
-CUpnpAVCPManager::~CUpnpAVCPManager()
-	{
-	iPendingHandlers.Reset();
-	iHttpPendingHandlers.Reset();
-	iPathResolvers.ResetAndDestroy();    
-	}
-	
-// -----------------------------------------------------------------------------
-// CUpnpAVCPManager::NewCommandId
-// return new command id
-// -----------------------------------------------------------------------------	
-TInt CUpnpAVCPManager::NewCommandId() 
-	{
-	return ++iLastCommandId;
-	}	
-
-// -----------------------------------------------------------------------------
-// CUpnpAVCPManager::PathResolver
-// return resolver or creates a new one
-// -----------------------------------------------------------------------------	
-CUpnpPathResolver& CUpnpAVCPManager::PathResolverL(const TDesC8& aUUID, CUpnpAVCPEngineSession* aSession) 
-    {
-	    
-    CUpnpPathResolver* resolver = CUpnpPathResolver::NewL(*this,aUUID);
-    CleanupStack::PushL(resolver);
-
-    TIdentityRelation<CUpnpPathResolver> matcher( CUpnpPathResolver::Match );
-	TInt idx = iPathResolvers.Find( resolver, matcher ); 
-	
-		
-	if (idx != KErrNotFound)   
-    	{
-	    CleanupStack::PopAndDestroy(resolver);	
-	    resolver = iPathResolvers[idx];
-    	}
-	else 
-    	{	    
-	    //subscribe
-	    CUpnpDevice* device = const_cast<CUpnpDevice*>(Device(aUUID));
-	    if (device) 
-	    	{
-	        CUpnpService* service  = Service(device, UpnpAVCPEngine::KContentDirectory);
-			DEBUGSTRING8(("Subscribe for events"));	        
-	        SubscribeL( service );
-	    	} 
-	    else 
-	    	{
-	    	User::Leave(KErrNotFound);
-	    	}
-	    CleanupStack::Pop(resolver);	
-	    iPathResolvers.AppendL(resolver);	    
-    	}  
-    	
-    resolver->RegisterSession(aSession);	
-    return *resolver;	
-    }
-    
-// -----------------------------------------------------------------------------
-// CUpnpAVCPManager::CleanupSession
-// cleanup after closed client session
-// -----------------------------------------------------------------------------		
-void CUpnpAVCPManager::CleanupSessionL( CUpnpAVCPEngineSession* aSession) 
-	{
-	DEBUGSTRING8(("CleanupSessionL"));	        	
-    for (TInt i = 0; i < iPathResolvers.Count(); i++ ) 
-    {
-        if (iPathResolvers[i]->UnregisterSession(aSession) == 0 ) 
-        {
-            //unsubscribe
-            CUpnpDevice* device = const_cast<CUpnpDevice*>(Device(iPathResolvers[i]->UUID()));
-	        if (device) 
-	        {
-	            CUpnpService* service  = Service(device, UpnpAVCPEngine::KContentDirectory);
-	            DEBUGSTRING8(("UnsubscribeL for events"));
-	            UnsubscribeL( service );
-	        }
-	    
-            //remove
-            delete iPathResolvers[i];
-            iPathResolvers.Remove(i);
-            i--;
-        }
-    }    
-	}
-	
-// -----------------------------------------------------------------------------
-// CUpnpAVCPManager::RegisterForAction
-// register for get action responses
-// -----------------------------------------------------------------------------			
-void CUpnpAVCPManager::RegisterForAction(MUpnpResponseHandler& aHandler)	 
-  {
-      iPendingHandlers.AppendL(&aHandler);
-  }
-
-// -----------------------------------------------------------------------------
-// CUpnpAVCPManager::HandlerBySessionId
-// return index of handler for specific session
-// -----------------------------------------------------------------------------	
-TInt CUpnpAVCPManager::HandlerBySessionId(TInt aSessionId) 
-    {
-    TInt i = KErrNotFound;
-
-    for ( i=0; i < iPendingHandlers.Count() && iPendingHandlers[i]->SessionId() != aSessionId; i++ )
-    {}
-
-    if ( i != iPendingHandlers.Count() )
-        {
-        return i;
-        }
-    return KErrNotFound;   
-    }
-// -----------------------------------------------------------------------------
-// CUpnpAVCPManager::HandlerBySessionId
-// return index of handler for specific session
-// -----------------------------------------------------------------------------	
-void CUpnpAVCPManager::RegisterForHttp(MUpnpHttpResponseHandler& aHandler)	 
-    {
-    iHttpPendingHandlers.AppendL(&aHandler);
-    }
-
-// -----------------------------------------------------------------------------
-// CUpnpAVCPManager::HandlerBySessionId
-// return index of handler for specific session
-// -----------------------------------------------------------------------------	    
-void CUpnpAVCPManager::UnregisterForHttp(MUpnpHttpResponseHandler& aHandler)	 
-    {
-    TInt index = iHttpPendingHandlers.Find(&aHandler);
-    if (index != KErrNotFound) 
-        {
-        iHttpPendingHandlers.Remove(index);    
-        }        
-    }    
-
-// -----------------------------------------------------------------------------
-// CUpnpAVCPManager::HandlerBySessionId
-// return index of handler for specific session
-// -----------------------------------------------------------------------------	
-TInt CUpnpAVCPManager::HttpHandlerBySessionId(TInt aSessionId) 
-    {
-    TInt i = KErrNotFound;
-
-    for ( i=0; i < iHttpPendingHandlers.Count() && iHttpPendingHandlers[i]->SessionId() != aSessionId; i++ )
-    {}
-
-    if ( i != iHttpPendingHandlers.Count() )
-        {
-            return i;
-        }
-    return KErrNotFound;   
-    }
-
-// -----------------------------------------------------------------------------
-// CUpnpAVCPManager::HandlerBySessionId
-// return index of handler for specific session
-// -----------------------------------------------------------------------------	
-void CUpnpAVCPManager::ActionResponseReceivedL(CUpnpAction* aAction) 
-    {
-    TInt sessionId = aAction->SessionId();	
-    TInt index = HandlerBySessionId(sessionId);
-    if (index != KErrNotFound) 
-        {
-        MUpnpResponseHandler* handler = iPendingHandlers[index];
-        iPendingHandlers.Remove(index);        
-        handler->InterpretL(aAction->Error(), aAction);    
-        }
-    
-    }
-
-// -----------------------------------------------------------------------------
-// CUpnpAVCPManager::StateUpdatedL
-//  Handles UPnP device events.
-// -----------------------------------------------------------------------------	
-void CUpnpAVCPManager::StateUpdatedL(CUpnpService*  aService) 
-    {
-    CUpnpPathResolver* resolver = CUpnpPathResolver::NewL(*this,aService->Device().Uuid());
-    CleanupStack::PushL(resolver);
-
-    TIdentityRelation<CUpnpPathResolver> matcher( CUpnpPathResolver::Match );
-	TInt idx = iPathResolvers.Find( resolver, matcher ); 
-	CleanupStack::PopAndDestroy(resolver);	    	    	
-	
-	if (idx != KErrNotFound)   
-    	{	   
-	    CUpnpStateVariable* systemUpdateId = aService->StateVariable( UpnpAVCPEngine::KSystemUpdateID );
-        if (systemUpdateId) 
-            {
-            (iPathResolvers[idx])->StateChangedL(systemUpdateId->Value()); 
-            }
-    	     
-    	}
-    }
-
-// --------------------------------------------------------------------------
-// CUpnpAVCPManager::HttpResponseReceivedL
-// Handles HTTP messages.
-// --------------------------------------------------------------------------
-void CUpnpAVCPManager::HttpResponseReceivedL(CUpnpHttpMessage* aMessage)
-    {
-    TInt sessionId = aMessage->SessionId();    
-	
-    TInt index = HttpHandlerBySessionId(sessionId);
-    if (index != KErrNotFound) 
-        {
-        MUpnpHttpResponseHandler* handler = iHttpPendingHandlers[index];        
-        handler->InterpretL(aMessage->Error(), aMessage);    
-        } 
-    else 
-    	{
-    	index = index;
-       	}   
-    }
-    
-// --------------------------------------------------------------------------
-// CUpnpAVCPManager::DeviceDiscoveredL
-// Handles UPnP device discoveries.
-// --------------------------------------------------------------------------
-void CUpnpAVCPManager::DeviceDiscoveredL(CUpnpDevice* aDevice)
-    {
-	TPtrC8 uuid = aDevice->Uuid();    
-	TPtrC8 fn = aDevice->DescriptionProperty(KAVCPEngineFriendlyName);    	
-	DEBUGSTRING8(("DeviceDiscoveredL %S %S", &uuid, &fn));     
-    }
-
-// --------------------------------------------------------------------------
-// CUpnpAVCPManager::DeviceDisappearedL(
-// Handles UPnP device disappears.
-// --------------------------------------------------------------------------
-void CUpnpAVCPManager::DeviceDisappearedL(CUpnpDevice* aDevice)
-    {
-	TPtrC8 uuid = aDevice->Uuid();
-	DEBUGSTRING8(("DeviceDiscoveredL %S", &uuid));     
-
-    CUpnpPathResolver* resolver = CUpnpPathResolver::NewL(*this,aDevice->Uuid());
-    CleanupStack::PushL(resolver);
-
-    TIdentityRelation<CUpnpPathResolver> matcher( CUpnpPathResolver::Match );
-	TInt idx = iPathResolvers.Find( resolver, matcher ); 
-	CleanupStack::PopAndDestroy(resolver);	    	    	
-	
-	if (idx != KErrNotFound)   
-		{    	    
-		   delete iPathResolvers[idx];   
-		   iPathResolvers.Remove(idx);
-		}	        
-    }
-    
-// end of file
-
-
-