Fixed AVController, it was accidentally set to search only for renderers. Now also servers are added to device list. Also some minor changes in package definition xml and platform API xml definition files.
/*
* 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: implementation for session towards a media server
*
*/
#ifndef C_UPNPBROWSINGSESSION_H
#define C_UPNPBROWSINGSESSION_H
// INCLUDE FILES
#include <e32base.h>
#include "upnpavcontroller.h"
#include <upnpmediaserverobserver.h>
#include "upnpavbrowsingsession.h"
#include "upnpavcontrolpointobserver.h"
// FORWARD DECLARATIONS
class CUpnpObject;
class CUpnpDevice;
class CUpnpAVRequest;
class CUpnpAVBrowseRequest;
class CUpnpAVDeviceExtended;
class CUpnpAVControllerServer;
/**
* Implements server side browsing session functionality. Implements
* browsing, searching, copying etc.
*
* @since S60 v3.1
*/
class CUPnPBrowsingSession : public CBase,
private MUpnpAVControlPointObserver
{
private:
/**
* Defines the internal state of browsing session
*/
enum TInternalBrowseState
{
ENone,
EBrowse,
EDestroyObject,
ECreateContainer,
};
public:
/**
* Static 1st phase constructor
*
* @param aControlPoint AV Control Point reference
* @param aClient S60 Media Server session reference
* @param aDispatcher observer callback dispatcher reference
* @param aSessionId session id
* @param aUuid device Uuid
*/
static CUPnPBrowsingSession* NewL
(
CUpnpAVControllerServer& aServer,
TInt aSessionId,
const TDesC8& aUuid
);
/**
* Destructor
*/
virtual ~CUPnPBrowsingSession();
private:
/**
* Private constructor
*
* @param aControlPoint AV Control Point reference
* @param aClient S60 Media Server session reference
* @param aDispatcher observer callback dispatcher reference
* @param aSessionId session id
*/
CUPnPBrowsingSession
(
CUpnpAVControllerServer& aServer,
TInt aSessionId
);
/**
* 2ns phase constructor
*/
void ConstructL( const TDesC8& aUuid );
private: // From MUpnpAVControlPointObserver
void ActionResponseL(CUpnpAction* aAction );
void StateUpdatedL(CUpnpService* aService);
void HttpResponseL(CUpnpHttpMessage* aMessage);
void DeviceDiscoveredL(CUpnpDevice* aDevice);
void DeviceDisappearedL(CUpnpDevice* aDevice);
private: // network event handling
/**
* Handles response for ContentDirectory SearchCapabilities command
*/
void CdsSearchCapabilitiesResponse(
TInt aErr,
const TDesC8& aSearchCaps );
/**
* Handles response for ContentDirectory Browse command
*/
void CdsBrowseResponseL(
TInt aErr,
const TDesC8& aBrowseFlag,
const TDesC8& aResult,
TInt aReturned,
TInt aMatches,
const TDesC8& aUpdateID );
/**
* Handles response for ContentDirectory Search command
*/
void CdsSearchResponse(
TInt aErr,
const TDesC8& aResult,
TInt aReturned,
TInt aMatches,
const TDesC8& aUpdateID );
/**
* Handles response for ContentDirectory DestroyObject command
*/
void CdsDestroyObjectResponse(
TInt aErr );
/**
* Handles response for ContentDirectory CreateObject command
*/
void CdsCreateObjectResponse(
TInt aErr,
const TDesC8& aObjectID,
const TDesC8& aResult );
public: // New functions
/**
* Handles UPnP device disappears.
*
* @param aDevice Device that disappeared.
*/
void DeviceDisappearedL( CUpnpAVDeviceExtended& aDevice );
/**
* Sets local (S60) Media Server Uuid
*
* @param aUuid device Uuid
*/
void SetLocalMSUuidL( const TDesC8& aUuid );
/**
* Returns Session Id
*
* @return session id
*/
TInt SessionId() const;
/**
* Returns device Uuid
*
* @return device Uuid
*/
const TDesC8& Uuid() const;
public:
/**
* See upnpavcontrollerimpl.h
*/
void GetBrowseResponseSizeL( const RMessage2& aMessage );
/**
* See upnpavcontrollerimpl.h
*/
void CancelGetBrowseResponseSizeL();
/**
* See upnpavcontrollerimpl.h
*/
void GetBrowseResponseL( const RMessage2& aMessage );
/**
* See upnpavcontrollerimpl.h
*/
void GetSearchResponseSizeL( const RMessage2& aMessage );
/**
* See upnpavcontrollerimpl.h
*/
void CancelGetSearchResponseSizeL();
/**
* See upnpavcontrollerimpl.h
*/
void GetSearchResponseL( const RMessage2& aMessage );
/**
* See upnpavcontrollerimpl.h
*/
void GetSearchCapabitiesSizeL( const RMessage2& aMessage );
/**
* See upnpavcontrollerimpl.h
*/
void CancelGetSearchCapabitiesSizeL();
/**
* See upnpavcontrollerimpl.h
*/
void GetSearchCapabitiesL( const RMessage2& aMessage );
/**
* See upnpavcontrollerimpl.h
*/
void CreateContainerL( const RMessage2& aMessage );
/**
* See upnpavcontrollerimpl.h
*/
void CancelCreateContainerL();
/**
* See upnpavcontrollerimpl.h
*/
void DeleteObjectL( const RMessage2& aMessage );
/**
* See upnpavcontrollerimpl.h
*/
void CancelDeleteObjectL();
/**
* See upnpavcontrollerimpl.h
*/
void DeviceDisappearedRequestL( const RMessage2& aMessage );
/**
* See upnpavcontrollerimpl.h
*/
void CancelDeviceDisappearedRequestL();
private:
/**
* Parses browse response and checks if the object can be deleted. If
* supported, sends destroyobject-action.
*
* @param aResponse browse response
*/
void CheckAndSendDestroyObjectActionL( const TDesC8& aResponse );
/**
* Resets internal state
*/
void ResetL();
/**
* Reads an object from a message
*
* @param aMessage client/server message
* @param aSlot message slot number
* @param aObj UPnP object
*/
void ReadObjFromMessageL( const RMessage2& aMessage, TInt aSlot,
CUpnpObject* aObj );
/**
* Reads a request from a message
*
* @param aMessage client/server message
* @param aSlot message slot number
* @param aReq request
*/
void ReadReqFromMessageL( const RMessage2& aMessage, TInt aSlot,
CUpnpAVRequest* aReq );
/**
* Reads a browse request from a message
*
* @param aMessage client/server message
* @param aSlot message slot number
* @param aReq browse request
*/
void ReadBrowseReqFromMessageL( const RMessage2& aMessage, TInt aSlot,
CUpnpAVBrowseRequest* aReq );
/**
* Reads a buffer from a message
*
* @param aMessage client/server message
* @param aSlot message slot number
* @return a buffer (heap descriptor)
*/
HBufC8* ReadBufFromMessageLC( const RMessage2& aMessage, TInt aSlot );
private:
CUpnpAVControllerServer& iServer;
TInt iSessionId;
TInt iInstanceId;
TInt iIPSessionId;
TInternalBrowseState iInternalState;
RMessage2* iActionMessage; // Own
RMessage2* iDeviceMessage; // Own
CUpnpAVDeviceExtended* iDevice; // Own
const CUpnpDevice* iCpDevice; // Not own.
HBufC8* iLocalMediaServerUuid; // Own
HBufC8* iRespBuf; // Own
HBufC8* iRespBuf2; // Own
HBufC8* iItemId; // Own
};
#endif // C_UPNPBROWSINGSESSION_H