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