Updated the SIS package, there was some BC issue with the earlier version. Also updated the platform UID to S^3 version.
/** @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: Implementation class for UPnP File Sharing class
*
*/
#ifndef C_CUPNPFILESHARINGBODY_H
#define C_CUPNPFILESHARINGBODY_H
#include <e32base.h>
#include "upnpmediaserverclient.h"
// FORWARD DECLARATIONS
class CUpnpItem;
class CUpnpContainer;
class CUpnpItemList;
class CUpnpBrowseCriteria;
class CUpnpContainerList;
/**
* Implementation class for UPnP File Sharing class
*
* @lib MediaServerClient.lib
* @since S60 v3.1
*/
class CUpnpFileSharingBody : public CActive
{
public:
enum TFileSharingAction
{
ENoAction = 1,
EShareItem,
EShareItemResult,
EShareContainer,
EShareContainerResult,
EShareItemList,
EShareItemListResult,
EUnshareContainer,
EUnshareItem,
EGetSharedItem,
EGetSharedItemResult,
EGetSharedItemList,
EGetSharedItemListResult,
EGetSharedContainer,
EGetSharedContainerResult,
EGetSharedContainerList,
EGetSharedContainerListResult,
EUnshareItemList,
EUnshareRoot,
EShareReference,
EShareReferenceList
};
/**
* Two-phased constructor.
*/
IMPORT_C static CUpnpFileSharingBody* NewL();
/**
* Destructor.
*/
virtual ~CUpnpFileSharingBody();
public: // Interface methods
void UnshareRootL(TRequestStatus& aStatus );
/**
* Unshares existing item list from the MediaServer
*
* @since S60 3.1
* @param aItemList reference to item list which are to be shared.
* @param aExecStatus reference pointing to the index of item list
* @param aStatus reference to TRequestStatus which is completed when procedure is over
*/
void UnshareItemListL(CUpnpItemList& aItemList, TInt& aExecStatus, TRequestStatus& aStatus);
/**
* Shares item list to the MediaServer
*
* @since S60 3.1
* @param aParentId information to which container the item is shared.
* @param aItemList reference to item list which are to be shared.
* @param aExecStatus reference pointing to the index of item list
* @param aStatus reference to TRequestStatus which is completed when procedure is over
*/
void ShareItemListL( const TDesC8& aParentId, CUpnpItemList& aItemList,
TInt& aExecStatus, TRequestStatus& aStatus );
/**
* Gets shared items information from MediaServer. Information is
* returned to item list reference
*
* @since S60 3.1
* @param aContainerId id of the container of which items are to be returned
* @param aBrowseCriteria specifies request details, such as requestCount, startingIndes, filter
* @param aItemList reference to item list where information is updated.
* @param aTotalMatches number of matched items
* @param aStatus reference to TRequestStatus which is completed when procedure is over
*/
void GetSharedItemListL( TInt aContainerId,
CUpnpBrowseCriteria& aBrowseCriteria,
CUpnpItemList& aItemList,
TInt& aTotalMatches,
TRequestStatus& aStatus );
/**
* Gets shared container information from MediaServer. Information is
* returned to item list reference
*
* @since S60 3.1
* @param aContainerId id of the container of which items are to be returned
* @param aBrowseCriteria specifies request details, such as requestCount, startingIndes, filter
* @param aContainerList reference to container list where information is updated.
* @param aTotalMatches number of matched containers
* @param aStatus reference to TRequestStatus which is completed when procedure is over
*/
void GetSharedContainerListL( TInt aContainerId,
CUpnpBrowseCriteria& aBrowseCriteria,
CUpnpContainerList& aContainerList,
TInt& aTotalMatches,
TRequestStatus& aStatus );
/**
* Shares a single item asynchronously to MediaServer.
* Metadata is fetched for the item within the interface.
* When API call returns, item contains updated information.
*
* @since S60 3.1
* @param aContainerId information to which container the item is shared.
* @param aItem reference to item which is shared.
* @param aStatus reference to TRequestStatus which is completed when procedure is over
*/
void ShareItemL( const TDesC8& aParentId, CUpnpItem& aItem,
TRequestStatus& aStatus );
/**
* Shares a container asynchronously to MediaServer.
* One container can contain items and other containers.
* Metadata is fetched for the items within the interface.
* When API call returns, container hierarchy contains updated information.
*
* @since S60 3.1
* @param aContainerId information to which container the item is shared.
* @param aContainer reference to container which is shared.
* @param aStatus reference to TRequestStatus which is completed when procedure is over
*/
void ShareContainerL( const TDesC8& aParentId, CUpnpContainer& aContainer,
TRequestStatus& aStatus );
/**
* Unshares existing item from the MediaServer
*
* @since S60 3.1
* @param aItemId reference to item which is unshared
*/
void UnshareItemL( TInt aItemId, TRequestStatus& aStatus );
/**
* Unshares existing container from the MediaServer
*
* @since S60 3.1
* @param aContainerId reference to container which is unshared
* @param aStatus reference to TRequestStatus which is completed when procedure is over
*/
void UnshareContainerL( TInt aContainerId,
TRequestStatus& aStatus );
/**
* Gets shared item information from MediaServer. Information is
* returned to item reference
*
* @since S60 3.1
* @param aItemId reference to item id
* @param aItem reference to item where information is updated.
*/
void GetSharedItemL( TInt aItemId,
CUpnpItem& aItem,
TRequestStatus& aStatus );
/**
* Gets shared container information from MediaServer. Information is
* returned to container reference. Returns the complete item/container
* branch below the specified container id. Container id "0" (root)
* returns the complete CDS hierarchy.
*
* @since S60 3.1
* @param aContainerId reference to container id
* @param aContaier reference to container where information is updated.
* @param aStatus reference to TRequestStatus which is completed when procedure is over
*/
void GetSharedContainerL( TInt aContainerId,
CUpnpContainer& aContainer,
TRequestStatus& aStatus );
/**
* Creates a single reference to passed item asynchronously in Media Server.
*
* @since S60 5.0 HN
* @param aContainerId - container id upon which the reference will be located.
* @param aObjectId - the reference is created on the basis of passed object id
* @param aItem reference item to be filled
* @param aStatus reference to TRequestStatus which is completed when procedure is over
*/
void ShareReferenceL( TInt aContainerId,
TInt aObjectId,
CUpnpItem& aItem,
TRequestStatus& aStatus );
/**
* Creates reference items, located at specific container, pointing specific objects
*
* @since S60 5.0 HN
* @param aItemList 'reference item' list which are to be shared
* @param aExecStatus reference pointing to the index of item list
* @param aStatus reference to TRequestStatus which is completed when procedure is over
*/
void ShareReferenceListL( CUpnpItemList& aItemList,
TInt& aExecStatus,
TRequestStatus& aStatus );
/**
* Returns reference to media server client
*
* @since S60 5.0 HN
* @return media server client refernce
*/
RUpnpMediaServerClient& MediaServerClient( );
public: // From CActive
/**
* Cancellation of ongoing asynchronous operation
*/
void DoCancel();
/**
* RunL
*/
void RunL();
/**
* RunError
*/
TInt RunError( TInt aErr );
private:
void LeaveIfBusyL();
void Reset();
void GetShareItemResultL();
void FinishShareItemL();
void GetShareContainerResultL();
void FinishShareContainerL();
void GetShareItemListResultL();
void FinishShareItemListL();
void FinishUnshareObject();
void FinishUnshareRoot();
void FinishGetSharedItemL();
void GetGetSharedItemResultL();
void FinishGetSharedContainerL();
void GetGetSharedContainerResultL();
void FinishUnshareItemList();
void FinishGetSharedItemListL();
void GetGetSharedItemListResultL();
void FinishGetSharedContainerListL();
void GetGetSharedContainerListResultL();
void HandleError();
private:
CUpnpFileSharingBody();
void ConstructL();
private: // data
// Ongoing action
TFileSharingAction iPendingAction;
// Handle to MediaServer
RUpnpMediaServerClient iMediaServer;
// Client's request status pointer (not own)
TRequestStatus* iClientStatus;
// Buffer to pass data to server
HBufC8* iSendBuffer; // owned
TPtr8 iSendBufferPtr;
// Buffer to receive data from server
HBufC8* iReceiveBuffer; // owned
TPtr8 iReceiveBufferPtr;
TInt iRespBufSize;
TPckg<TInt> iRespBufSizePkg;
// Pointers to client data structures
CUpnpContainer* iClientContainer; // not owned
CUpnpItem* iClientItem; // not owned
CUpnpItemList* iClientItemList; // not owned
CUpnpContainerList* iClientContainerList; // not owned
TPckg<TInt>* iClientExecStatusPkg; // owned
};
#endif // C_CUPNPFILESHARINGBODY_H