upnpavcontroller/upnpavcontrollerserver/inc/upnpavcontrollerimpl.h
branchnew development branch with rendering state machine and other goodies
changeset 38 5360b7ddc251
parent 0 7f85d04be362
--- a/upnpavcontroller/upnpavcontrollerserver/inc/upnpavcontrollerimpl.h	Fri Sep 17 08:31:21 2010 +0300
+++ b/upnpavcontroller/upnpavcontrollerserver/inc/upnpavcontrollerimpl.h	Mon Nov 01 12:37:49 2010 +0200
@@ -1,547 +1,653 @@
-/*
-* Copyright (c) 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:      AV Controller Implementation
-*
-*/
-
-
-
-
-
-
-
-#ifndef C_UPNPAVCONTROLLERIMPL_H
-#define C_UPNPAVCONTROLLERIMPL_H
-
-// INDLUDE FILES
-#include <e32base.h>
-#include <upnpavcontrolpointobserver.h>
-#include <upnpmediaserverclient.h>
-#include "upnpavcontrollerglobals.h"
-#include "upnpconnectionmonitorobserver.h"
-
-// FORWARD DECLARATIONS
-class MUPnPAVDeviceObserver;
-class MUPnPAVMediaObserver;
-class MUPnPAVFileObserver;
-class CUPnPPlaybackSession;
-class CUpnpAVControllerServer;
-class CUpnpAVDevice;
-class CUpnpHttpMessage;
-class CUpnpDevice;
-class CUpnpAVDeviceExtended;
-class CUPnPBrowsingSession;
-class CUpnpDeviceDiscoveryMessage;
-
-class CUPnPUploadSession;
-class CUPnPDownloadSession;
-
-/**
- *  AV Controller server side implementation. Impmements the base session. 
- *  Rendering and browsing sessions are created from this session.
- *  Handles device discovery and fetching of device listst.
- *
- *  @lib upnpavcontrollerclient.lib
- *  @since S60 v3.1
- */
-class CUPnPAVControllerImpl :   public CBase,
-                                public MUPnPConnectionMonitorObserver
-                                
-    {
-
-public:
-
-    /**
-     * Two-phased constructor.
-     *
-     * @param aControlPoint control point reference
-     * @param aClient media server client reference
-     * @param aDispatcher callback dispatcher reference
-     * @param aServer server class reference
-     */
-    static CUPnPAVControllerImpl* NewL
-        (
-        RUpnpMediaServerClient& aClient,
-        CUpnpAVControllerServer& aServer
-        );
-    
-    /**
-     * Destructor
-     */
-    virtual ~CUPnPAVControllerImpl();
-    
-private:
-
-    /**
-     * Private constructor
-     *
-     * @param aControlPoint control point reference
-     * @param aClient media server client reference
-     * @param aDispatcher callback dispatcher reference
-     * @param aServer server class reference          
-     */
-    CUPnPAVControllerImpl
-    (
-    RUpnpMediaServerClient& aClient,
-    CUpnpAVControllerServer& aServer
-    );    
-    
-    /**
-     * Destructor
-     */
-    void ConstructL();    
-
-public: // From MUPnPConnectionMonitorObserver
-    
-    /**
-     * See upnpconnectionmonitorobserver.h
-     */
-    void ConnectionLost();
-    
-public: // New functions
-
-    /**
-     * Handles UPnP device discoveries.
-     * @since Series 60 2.6
-     * @param aDevice Device that is discovered.
-     */
-    void DeviceDiscoveredL( CUpnpAVDeviceExtended& aDevice );
-
-    /**
-     * Handles UPnP device disappears.
-     * @since Series 60 2.6
-     * @param aDevice Device that disappeared.
-     */
-    void DeviceDisappearedL( CUpnpAVDeviceExtended& aDevice );
-    
-
-    /**
-     * Enables device discovery by storing a message to server side, which
-     * is completed when a device has been discovered.
-     *
-     * @param aMessage message
-     */
-    void EnableDeviceDiscoveryL( const RMessage2& aMessage );
-        
-    /**
-     * Disables (cancels) device discovery (and message).
-     */
-    void DisableDeviceDiscoveryL();
-    
-    /**
-     * Returns a discovered/disappeared device to client side.
-     *
-     * @param aMessage message
-     */
-    void GetDeviceL( const RMessage2& aMessage );
-    
-    /**
-     * Returns the size of device list to client side.
-     *
-     * @param aMessage message
-     */
-    void GetDeviceListSizeL( const RMessage2& aMessage );
-    
-    /**
-     * Returns the device list to client side.
-     *
-     * @param aMessage message
-     */
-    void GetDeviceListL( const RMessage2& aMessage );
-    
-    /**
-     * Creates a rendering session.
-     *
-     * @param aMessage message
-     */
-    void CreateRenderingSessionL( const RMessage2& aMessage );
-    
-    /**
-     * Destroys a rendering session
-     *
-     * @param aMessage message
-     */
-    void DestroyRenderingSessionL( const RMessage2& aMessage );
-    
-    /**
-     * Enables (unsolicited) eventing from a remote device. Stores
-     * the message in to redering session to return an event.
-     *
-     * @param aMessage message
-     */
-    void EventRequestL( const RMessage2& aMessage );
-    
-    /**
-     * Cancels eventing message.
-     *
-     * @param aMessage message
-     */
-    void CancelEventRequestL( const RMessage2& aMessage );
-    
-    /**
-     * Sets URI
-     *
-     * @param aMessage message
-     */
-    void SetURIL( const RMessage2& aMessage );
-    
-    /**
-     * Cancels SetURI (basically just ignores the result)
-     *
-     * @param aMessage message
-     */
-    void CancelSetURIL( const RMessage2& aMessage );
-    
-    /**
-     * Sets Next URI
-     *
-     * @param aMessage message
-     */
-    void SetNextURIL( const RMessage2& aMessage );
-    
-    /**
-     * Cancels SetNextURI (basically just ignores the result)
-     *
-     * @param aMessage message
-     */
-    void CancelSetNextURIL( const RMessage2& aMessage );
-    
-    /**
-     * Send the play-action
-     *
-     * @param aMessage message
-     */
-    void PlayL( const RMessage2& aMessage );
-    
-    /**
-     * Cancels the play-action (basically just ignores the result)
-     *
-     * @param aMessage message
-     */
-    void CancelPlayL( const RMessage2& aMessage );
-
-    /**
-     * Send the stop-action
-     *
-     * @param aMessage message
-     */
-    void StopL( const RMessage2& aMessage );
-    
-    /**
-     * Cancels stop (basically just ignores the result)
-     *
-     * @param aMessage message
-     */
-    void CancelStopL( const RMessage2& aMessage );
-
-    /**
-     * Send the pause-action
-     *
-     * @param aMessage message
-     */
-    void PauseL( const RMessage2& aMessage );
-    
-    /**
-     * Cancels pause (basically just ignores the result)
-     *
-     * @param aMessage message
-     */
-    void CancelPauseL( const RMessage2& aMessage );
-
-    /**
-     * Send the setvolume-action
-     *
-     * @param aMessage message
-     */
-    void SetVolumeL( const RMessage2& aMessage );
-    
-    /**
-     * Cancels setvolume (basically just ignores the result)
-     *
-     * @param aMessage message
-     */
-    void CancelSetVolumeL( const RMessage2& aMessage );
-    
-    /**
-     * Send the getvolume-action
-     *
-     * @param aMessage message
-     */
-    void GetVolumeL( const RMessage2& aMessage );
-    
-    /**
-     * Cancels getvolume (basically just ignores the result)
-     *
-     * @param aMessage message
-     */
-    void CancelGetVolumeL( const RMessage2& aMessage );
-    
-    /**
-     * Send the setmute-action
-     *
-     * @param aMessage message
-     */
-    void SetMuteL( const RMessage2& aMessage );
-    
-    /**
-     * Cancels setmute (basically just ignores the result)
-     *
-     * @param aMessage message
-     */
-    void CancelSetMuteL( const RMessage2& aMessage );
-    
-    /**
-     * Send the getmute-action
-     *
-     * @param aMessage message
-     */
-    void GetMuteL( const RMessage2& aMessage );
-    
-    /**
-     * Cancels getmute (basically just ignores the result)
-     *
-     * @param aMessage message
-     */
-    void CancelGetMuteL( const RMessage2& aMessage );
-    
-    /**
-     * Send the getpositioninfo-action
-     *
-     * @param aMessage message
-     */
-    void GetPositionInfoL( const RMessage2& aMessage );
-    
-    /**
-     * Cancels getpositioninfo (basically just ignores the result)
-     *
-     * @param aMessage message
-     */
-    void CancelGetPositionInfoL( const RMessage2& aMessage );
-    
-    /**
-     * Create a browsing session
-     *
-     * @param aMessage message
-     */
-    void CreateBrowsingSessionL( const RMessage2& aMessage );
-    
-    /**
-     * Destroy a browsing session
-     *
-     * @param aMessage message
-     */
-    void DestroyBrowsingSessionL( const RMessage2& aMessage );
-    
-    /**
-     * Get browse response (return the size of it to client side)
-     *
-     * @param aMessage message
-     */
-    void GetBrowseResponseSizeL( const RMessage2& aMessage );  
-
-    /**
-     * Cancel get browse response (ignore result)
-     *
-     * @param aMessage message
-     */
-    void CancelGetBrowseResponseSizeL( const RMessage2& aMessage );
-
-    /**
-     * Return browse response to client side
-     *
-     * @param aMessage message
-     */
-    void GetBrowseResponseL( const RMessage2& aMessage );
-
-    /**
-     * Get search response (return the size of it to client side)
-     *
-     * @param aMessage message
-     */
-    void GetSearchResponseSizeL( const RMessage2& aMessage );
-
-    /**
-     * Cancel search response (ignore result)
-     *
-     * @param aMessage message
-     */
-    void CancelGetSearchResponseSizeL( const RMessage2& aMessage );
-
-    /**
-     * Return search response to client side
-     *
-     * @param aMessage message
-     */
-    void GetSearchResponseL( const RMessage2& aMessage );
-    
-    /**
-     * Get search capabilities (return the size of it to client side)
-     *
-     * @param aMessage message
-     */
-    void GetSearchCapabitiesSizeL( const RMessage2& aMessage );
-    
-    /**
-     * Cancel get search capabilities (ignore result)
-     *
-     * @param aMessage message
-     */
-    void CancelGetSearchCapabitiesSizeL( const RMessage2& aMessage );
-    
-    /**
-     * Return search capabilities to client side
-     *
-     * @param aMessage message
-     */
-    void GetSearchCapabitiesL( const RMessage2& aMessage );
-
-    /**
-     * Create container action.
-     *
-     * @param aMessage message
-     */
-    void CreateContainerL( const RMessage2& aMessage );
-    
-    /**
-     * Cancels create container.
-     *
-     * @param aMessage message
-     */
-    void CancelCreateContainerL( const RMessage2& aMessage );
-    
-    /**
-     * Delete object action
-     *
-     * @param aMessage message
-     */
-    void DeleteObjectL( const RMessage2& aMessage );
-    
-    /**
-     * Cancels delete object
-     *
-     * @param aMessage message
-     */
-    void CancelDeleteObjectL( const RMessage2& aMessage );
-
-    /**
-     * Stores a message in to rendering or browsing session, which is
-     * completed when the session specific device has disappeared. As a
-     * result the client knows that the device is no longer available and
-     * the session has became absolete.
-     *
-     * @param aMessage message
-     */
-    void DeviceDisappearedRequestL( const RMessage2& aMessage );
-    
-    /**
-     * Cancels the msg.
-     *
-     * @param aMessage message
-     */
-    void CancelDeviceDisappearedRequestL( const RMessage2& aMessage );
-    
-    /**
-     * Stores a message in to base session, which is completed when the
-     * WLAN is disconnected.
-     *
-     * @param aMessage message
-     */
-    void MonitorConnectionL( const RMessage2& aMessage );
-    
-    /**
-     * Cancels the msg.
-     *
-     * @param aMessage message
-     */
-    void CancelMonitorConnectionL( const RMessage2& aMessage );
-
-    void CreateDownloadSessionL( const RMessage2& aMessage );
-    
-    void DestroyDownloadSessionL( const RMessage2& aMessage );
-
-    void StartDownloadL( const RMessage2& aMessage );
-    
-    void StartDownloadFHL( const RMessage2& aMessage );
-    
-    void CancelDownloadL( const RMessage2& aMessage );
-
-    void CancelAllDownloadsL( const RMessage2& aMessage );
-    
-    void StartTrackingDownloadProgressL( const RMessage2& aMessage );
-
-    void StopTrackingDownloadProgressL( const RMessage2& aMessage );
-
-    void GetDownloadEventL( const RMessage2& aMessage );
-    
-    void CancelGetDownloadEventL( const RMessage2& aMessage );
-
-    void CreateUploadSessionL( const RMessage2& aMessage );
-    
-    void DestroyUploadSessionL( const RMessage2& aMessage );    
-
-    void StartUploadL( const RMessage2& aMessage );
-    
-    void CancelUploadL( const RMessage2& aMessage );
-
-    void CancelAllUploadsL( const RMessage2& aMessage );
-    
-    void StartTrackingUploadProgressL( const RMessage2& aMessage );
-
-    void StopTrackingUploadProgressL( const RMessage2& aMessage );
-
-    void GetUploadEventL( const RMessage2& aMessage );
-    
-    void CancelGetUploadEventL( const RMessage2& aMessage );
-
-private:
-
-    /**
-     * Device queu handling. Checks the queu and dequeus it if needed.
-     *
-     * @param aDevice av device
-     * @param aType discovered/disappeared
-     */
-    void DequeDeviceL( const CUpnpAVDevice& aDevice,
-        TAVControllerDeviceDiscovery aType );
-
-private:
-    
-    RUpnpMediaServerClient&     iMediaServer; // Not own       
-    
-    CUpnpAVControllerServer&    iServer; // Not own       
-    
-    RMessage2*                  iDeviceDiscoveryMsg; // Own
-    
-    TBool                       iDeviceDiscoveryEnabled;
-    
-    RMessage2*                  iConnectionMsg; // Own
-    
-    HBufC8*                     iDeviceRespBuf; // Own
-    
-    HBufC8*                     iDeviceListRespBuf; // Own
-    
-    RPointerArray<CUPnPPlaybackSession> iPlaybackSessions; // Own
-    
-    RPointerArray<CUPnPBrowsingSession> iBrowsingSessions; // Own
-    
-    RPointerArray<CUPnPUploadSession>   iUploadSessions; // Own
-    
-    RPointerArray<CUPnPDownloadSession> iDownloadSessions; // Own
-    
-    
-    TSglQue<CUpnpDeviceDiscoveryMessage>        iDeviceMsgQue; // Own
-    TSglQueIter<CUpnpDeviceDiscoveryMessage>    iDeviceMsgQueIter;
-    };
-
-#endif // C_UPNPAVCONTROLLERIMPL_H
+/*
+* Copyright (c) 2006-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:      AV Controller Implementation
+*
+*/
+
+
+
+
+
+
+
+#ifndef C_UPNPAVCONTROLLERIMPL_H
+#define C_UPNPAVCONTROLLERIMPL_H
+
+// INDLUDE FILES
+#include <e32base.h>
+#include "upnpavcontrollerglobals.h"
+
+// FORWARD DECLARATIONS
+
+class CUPnPPlaybackSession;
+class CUpnpAVControllerServer;
+class CUpnpAVDevice;
+class CUpnpAVDeviceExtended;
+class CUPnPBrowsingSession;
+class CUpnpDeviceDiscoveryMessage;
+class CUPnPUploadSession;
+class CUPnPDownloadSession;
+
+/**
+ *  AV Controller server side implementation. Impmements the base session. 
+ *  Rendering and browsing sessions are created from this session.
+ *  Handles device discovery and fetching of device listst.
+ *
+ *  @exe upnpavcontrollerserver.exe
+ *  @since S60 v3.1
+ */
+class CUPnPAVControllerImpl : public CBase
+                                
+    {
+
+public:
+
+    /**
+     * Two-phased constructor.
+     *
+     * @param aClient media server client reference
+     * @param aServer server class reference
+     */
+    static CUPnPAVControllerImpl* NewL
+        (
+        CUpnpAVControllerServer& aServer
+        );
+    
+    /**
+     * Destructor
+     */
+    virtual ~CUPnPAVControllerImpl();
+    
+private:
+
+    /**
+     * Private constructor
+     *
+     * @param aClient media server client reference
+     * @param aServer server class reference          
+     */
+    CUPnPAVControllerImpl( CUpnpAVControllerServer& aServer );    
+    
+    /**
+     * Destructor
+     */
+    void ConstructL();    
+
+public: // New functions
+
+    /**
+     * Handles connection lost.
+     */
+    void ConnectionLost();
+    
+    /**
+     * Handles UPnP device discoveries.
+     * @since Series 60 2.6
+     * @param aDevice Device that is discovered.
+     */
+    void DeviceDiscoveredL( CUpnpAVDeviceExtended& aDevice );
+
+    /**
+     * Handles UPnP device disappears.
+     * @since Series 60 2.6
+     * @param aDevice Device that disappeared.
+     */
+    void DeviceDisappearedL( CUpnpAVDeviceExtended& aDevice );
+
+    /**
+     * Handles UPnP device icon download completions.
+     * @param aDevice Device that's icon was downloaded.
+     */
+    void DeviceIconDownloadedL( CUpnpAVDeviceExtended& aDevice );
+
+    /**
+     * Enables device discovery by storing a message to server side, which
+     * is completed when a device has been discovered.
+     *
+     * @param aMessage message
+     */
+    void EnableDeviceDiscoveryL( const RMessage2& aMessage );
+        
+    /**
+     * Disables (cancels) device discovery (and message).
+     */
+    void DisableDeviceDiscoveryL();
+    
+    /**
+     * Returns a discovered/disappeared device to client side.
+     *
+     * @param aMessage message
+     */
+    void GetDeviceL( const RMessage2& aMessage );
+    
+    /**
+     * Returns the size of device list to client side.
+     *
+     * @param aMessage message
+     */
+    void GetDeviceListSizeL( const RMessage2& aMessage );
+    
+    /**
+     * Returns the device list to client side.
+     *
+     * @param aMessage message
+     */
+    void GetDeviceListL( const RMessage2& aMessage );
+
+    /**
+     * Returns the icon to client side.
+     *
+     * @param aMessage message
+     */
+    void GetDeviceIconRequestL( const RMessage2& aMessage );
+
+    /**
+     * Creates a rendering session.
+     *
+     * @param aMessage message
+     */
+    void CreateRenderingSessionL( const RMessage2& aMessage );
+    
+    /**
+     * Destroys a rendering session
+     *
+     * @param aMessage message
+     */
+    void DestroyRenderingSessionL( const RMessage2& aMessage );
+    
+    /**
+     * Enables (unsolicited) eventing from a remote device. Stores
+     * the message in to redering session to return an event.
+     *
+     * @param aMessage message
+     */
+    void EventRequestL( const RMessage2& aMessage );
+    
+    /**
+     * Cancels eventing message.
+     *
+     * @param aMessage message
+     */
+    void CancelEventRequestL( const RMessage2& aMessage );
+    
+    /**
+     * Sets URI
+     *
+     * @param aMessage message
+     */
+    void SetURIL( const RMessage2& aMessage );
+    
+    /**
+     * Cancels SetURI (basically just ignores the result)
+     *
+     * @param aMessage message
+     */
+    void CancelSetURIL( const RMessage2& aMessage );
+    
+    /**
+     * Sets Next URI
+     *
+     * @param aMessage message
+     */
+    void SetNextURIL( const RMessage2& aMessage );
+    
+    /**
+     * Cancels SetNextURI (basically just ignores the result)
+     *
+     * @param aMessage message
+     */
+    void CancelSetNextURIL( const RMessage2& aMessage );
+    
+    /**
+     * Send the play-action
+     *
+     * @param aMessage message
+     */
+    void PlayL( const RMessage2& aMessage );
+    
+    /**
+     * Cancels the play-action (basically just ignores the result)
+     *
+     * @param aMessage message
+     */
+    void CancelPlayL( const RMessage2& aMessage );
+
+    /**
+     * Send the stop-action
+     *
+     * @param aMessage message
+     */
+    void StopL( const RMessage2& aMessage );
+    
+    /**
+     * Cancels stop (basically just ignores the result)
+     *
+     * @param aMessage message
+     */
+    void CancelStopL( const RMessage2& aMessage );
+
+    /**
+     * Send the pause-action
+     *
+     * @param aMessage message
+     */
+    void PauseL( const RMessage2& aMessage );
+    
+    /**
+     * Cancels pause (basically just ignores the result)
+     *
+     * @param aMessage message
+     */
+    void CancelPauseL( const RMessage2& aMessage );
+
+    /**
+     * Send the setvolume-action
+     *
+     * @param aMessage message
+     */
+    void SetVolumeL( const RMessage2& aMessage );
+    
+    /**
+     * Cancels setvolume (basically just ignores the result)
+     *
+     * @param aMessage message
+     */
+    void CancelSetVolumeL( const RMessage2& aMessage );
+    
+    /**
+     * Send the getvolume-action
+     *
+     * @param aMessage message
+     */
+    void GetVolumeL( const RMessage2& aMessage );
+    
+    /**
+     * Cancels getvolume (basically just ignores the result)
+     *
+     * @param aMessage message
+     */
+    void CancelGetVolumeL( const RMessage2& aMessage );
+    
+    /**
+     * Send the setmute-action
+     *
+     * @param aMessage message
+     */
+    void SetMuteL( const RMessage2& aMessage );
+    
+    /**
+     * Cancels setmute (basically just ignores the result)
+     *
+     * @param aMessage message
+     */
+    void CancelSetMuteL( const RMessage2& aMessage );
+    
+    /**
+     * Send the getmute-action
+     *
+     * @param aMessage message
+     */
+    void GetMuteL( const RMessage2& aMessage );
+    
+    /**
+     * Cancels getmute (basically just ignores the result)
+     *
+     * @param aMessage message
+     */
+    void CancelGetMuteL( const RMessage2& aMessage );
+    
+    /**
+     * Send the getpositioninfo-action
+     *
+     * @param aMessage message
+     */
+    void GetPositionInfoL( const RMessage2& aMessage );
+    
+    /**
+     * Cancels getpositioninfo (basically just ignores the result)
+     *
+     * @param aMessage message
+     */
+    void CancelGetPositionInfoL( const RMessage2& aMessage );
+    
+    /**
+     * Send the seek action with unit REL_TIME.
+     *
+     * @param aMessage message
+     */
+    void SeekRelTimeL( const RMessage2& aMessage );
+        
+    /**
+     * Get initial state of the renderer
+     *
+     * @param aMessage message
+     */
+    void GetRendererStateL( const RMessage2& aMessage );
+    
+    /**
+     * Cancels seeking with unit REL_TIME (basically just ignores the result).
+     *
+     * @param aMessage message
+     */
+    void CancelSeekRelTimeL( const RMessage2& aMessage );
+    
+    /**
+     * Create a browsing session
+     *
+     * @param aMessage message
+     */
+    void CreateBrowsingSessionL( const RMessage2& aMessage );
+    
+    /**
+     * Destroy a browsing session
+     *
+     * @param aMessage message
+     */
+    void DestroyBrowsingSessionL( const RMessage2& aMessage );
+    
+    /**
+     * Get browse response (return the size of it to client side)
+     *
+     * @param aMessage message
+     */
+    void GetBrowseResponseSizeL( const RMessage2& aMessage );  
+
+    /**
+     * Cancel get browse response (ignore result)
+     *
+     * @param aMessage message
+     */
+    void CancelGetBrowseResponseSizeL( const RMessage2& aMessage );
+
+    /**
+     * Return browse response to client side
+     *
+     * @param aMessage message
+     */
+    void GetBrowseResponseL( const RMessage2& aMessage );
+
+    /**
+     * Get search response (return the size of it to client side)
+     *
+     * @param aMessage message
+     */
+    void GetSearchResponseSizeL( const RMessage2& aMessage );
+
+    /**
+     * Cancel search response (ignore result)
+     *
+     * @param aMessage message
+     */
+    void CancelGetSearchResponseSizeL( const RMessage2& aMessage );
+
+    /**
+     * Return search response to client side
+     *
+     * @param aMessage message
+     */
+    void GetSearchResponseL( const RMessage2& aMessage );
+    
+    /**
+     * Get search capabilities (return the size of it to client side)
+     *
+     * @param aMessage message
+     */
+    void GetSearchCapabitiesSizeL( const RMessage2& aMessage );
+    
+    /**
+     * Cancel get search capabilities (ignore result)
+     *
+     * @param aMessage message
+     */
+    void CancelGetSearchCapabitiesSizeL( const RMessage2& aMessage );
+    
+    /**
+     * Return search capabilities to client side
+     *
+     * @param aMessage message
+     */
+    void GetSearchCapabitiesL( const RMessage2& aMessage );
+
+    /**
+     * Create container action.
+     *
+     * @param aMessage message
+     */
+    void CreateContainerL( const RMessage2& aMessage );
+    
+    /**
+     * Cancels create container.
+     *
+     * @param aMessage message
+     */
+    void CancelCreateContainerL( const RMessage2& aMessage );
+    
+    /**
+     * Delete object action
+     *
+     * @param aMessage message
+     */
+    void DeleteObjectL( const RMessage2& aMessage );
+    
+    /**
+     * Cancels delete object
+     *
+     * @param aMessage message
+     */
+    void CancelDeleteObjectL( const RMessage2& aMessage );
+
+    /**
+     * Stores a message in to rendering or browsing session, which is
+     * completed when the session specific device has disappeared. As a
+     * result the client knows that the device is no longer available and
+     * the session has became absolete.
+     *
+     * @param aMessage message
+     */
+    void DeviceDisappearedRequestL( const RMessage2& aMessage );
+    
+    /**
+     * Cancels the msg.
+     *
+     * @param aMessage message
+     */
+    void CancelDeviceDisappearedRequestL( const RMessage2& aMessage );
+    
+    /**
+     * Stores a message in to base session, which is completed when the
+     * WLAN is disconnected.
+     *
+     * @param aMessage message
+     */
+    void MonitorConnectionL( const RMessage2& aMessage );
+    
+    /**
+     * Cancels the connection monitoring message.
+     *
+     * @param aMessage message
+     */
+    void CancelMonitorConnectionL( const RMessage2& aMessage );
+    
+    /**
+     * Create a download session
+     *
+     * @param aMessage message
+     */
+    void CreateDownloadSessionL( const RMessage2& aMessage );
+    
+    /**
+     * Destroy the download session
+     *
+     * @param aMessage message
+     */
+    void DestroyDownloadSessionL( const RMessage2& aMessage );
+    
+    /**
+     * Start download
+     *
+     * @param aMessage message
+     */
+    void StartDownloadL( const RMessage2& aMessage );
+    
+    /**
+     * Start FHL download.
+     *
+     * @param aMessage message
+     */
+    void StartDownloadFHL( const RMessage2& aMessage );
+    
+    /**
+     * Cancel download
+     *
+     * @param aMessage message
+     */
+    void CancelDownloadL( const RMessage2& aMessage );
+    
+    /**
+     * Cancel all download
+     *
+     * @param aMessage message
+     */
+    void CancelAllDownloadsL( const RMessage2& aMessage );
+    
+    /**
+     * Start tracking the download progress
+     *
+     * @param aMessage message
+     */
+    void StartTrackingDownloadProgressL( const RMessage2& aMessage );
+    
+    /**
+     * Stop tracking the download progress
+     *
+     * @param aMessage message
+     */
+    void StopTrackingDownloadProgressL( const RMessage2& aMessage );
+    
+    /**
+     * Get download event
+     *
+     * @param aMessage message
+     */
+    void GetDownloadEventL( const RMessage2& aMessage );
+    
+    /**
+     * Cancel download event
+     *
+     * @param aMessage message
+     */
+    void CancelGetDownloadEventL( const RMessage2& aMessage );
+
+    /**
+     * Create upload session
+     *
+     * @param aMessage message
+     */
+    void CreateUploadSessionL( const RMessage2& aMessage );
+    
+    /**
+     * Destroy upload session
+     *
+     * @param aMessage message
+     */
+    void DestroyUploadSessionL( const RMessage2& aMessage );    
+    
+    /**
+     * Start upload
+     *
+     * @param aMessage message
+     */
+    void StartUploadL( const RMessage2& aMessage );
+    
+    /**
+     * Cancel upload
+     *
+     * @param aMessage message
+     */
+    void CancelUploadL( const RMessage2& aMessage );
+    
+    /**
+     * Cancel all upload
+     *
+     * @param aMessage message
+     */
+    void CancelAllUploadsL( const RMessage2& aMessage );
+    
+    /**
+     * Start tracking the upload progress
+     *
+     * @param aMessage message
+     */
+    void StartTrackingUploadProgressL( const RMessage2& aMessage );
+    
+    /**
+     * Stop tracking upload progress
+     *
+     * @param aMessage message
+     */
+    void StopTrackingUploadProgressL( const RMessage2& aMessage );
+    
+    /**
+     * Get upload event
+     *
+     * @param aMessage message
+     */
+    void GetUploadEventL( const RMessage2& aMessage );
+    
+    /**
+     * Cancel get upload event
+     *
+     * @param aMessage message
+     */
+    void CancelGetUploadEventL( const RMessage2& aMessage );
+
+private:
+
+    /**
+     * Device queu handling. Checks the queu and dequeus it if needed.
+     *
+     * @param aDevice av device
+     * @param aType discovered/disappeared
+     */
+    void DequeDeviceL( const CUpnpAVDevice& aDevice,
+        TAVControllerDeviceDiscovery aType );
+
+private:
+       
+    CUpnpAVControllerServer&    iServer; // Not own       
+    
+    RMessage2*                  iDeviceDiscoveryMsg; // Own
+    
+    TBool                       iDeviceDiscoveryEnabled;
+    
+    RMessage2*                  iConnectionMsg; // Own
+    
+    HBufC8*                     iDeviceRespBuf; // Own
+    
+    HBufC8*                     iDeviceListRespBuf; // Own
+    
+    RPointerArray<CUPnPPlaybackSession> iPlaybackSessions; // Own
+    
+    RPointerArray<CUPnPBrowsingSession> iBrowsingSessions; // Own
+    
+    RPointerArray<CUPnPUploadSession>   iUploadSessions; // Own
+    
+    RPointerArray<CUPnPDownloadSession> iDownloadSessions; // Own
+    
+    
+    TSglQue<CUpnpDeviceDiscoveryMessage>        iDeviceMsgQue; // Own
+    TSglQueIter<CUpnpDeviceDiscoveryMessage>    iDeviceMsgQueIter;
+    };
+
+#endif // C_UPNPAVCONTROLLERIMPL_H