diff -r 000000000000 -r a2952bb97e68 mpx/collectionframework/collectionserver/inc/mpxcollectionserversession.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mpx/collectionframework/collectionserver/inc/mpxcollectionserversession.h Thu Dec 17 08:55:47 2009 +0200 @@ -0,0 +1,245 @@ +/* +* 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: Collection server session +* +*/ + + +#ifndef CMPXCOLLECTIONSESSION_H +#define CMPXCOLLECTIONSESSION_H + +#include +#include +#include +#include +#include +#include "mpxcollectionengineobserver.h" +#include "mpxcollectionserverdefs.h" + +class CMPXCollectionClientContext; +class CMPXCollectionEngine; +class CMPXMessageQueue; +class CMPXMediaArray; +class CMPXCollectionPath; + +/** +* Music collection server session +*/ +class CMPXCollectionSession : public CSession2, + public MMPXCollectionEngineObserver + { +public: + + /** + * Two-phased constructor. Leaves on failure. + * + * @param aEngine engine object + * @return The constructed object + */ + static CMPXCollectionSession* NewL(CMPXCollectionEngine& aEngine); + + /** + * C++ constructor + * + * @param aEngine engine object + */ + CMPXCollectionSession(CMPXCollectionEngine& aEngine); + + /** + * Destructor + */ + ~CMPXCollectionSession(); + +private: // From base classes + + /** + * From MMPXCollectionEngineObserver + * Handles the collection entries/item being opened. Typically called + * when client has Open()'d a folder or an item + * + * @param aMedia media to hold collection entries + * @param aIndex focused entry + * @param aComplete ETrue no more entries. EFalse more entries + * expected + * @param aError error code + */ + void HandleOpen(CMPXMedia* aMedia, TInt aIndex, + TBool aComplete,TInt aError); + + /** + * From MMPXCollectionEngineObserver + * Handles the completion of an async operation + * + * @param aError error code of completion + */ + void HandleOpComplete(TInt aError); + + /** + * From MMPXCollectionEngineObserver + * Handle media properties + * + * @param aMedia media + * @param aError error code + */ + void HandleMedia(CMPXMedia* aMedia, TInt aError); + + /** + * From MMPXCollectionEngineObserver + * Handle completion of a asynchronous command + * + * @param aCommandResult result of the command, NULL if error + * @param aError error code + */ + void HandleCommandComplete(CMPXCommand* aCommandResult, + TInt aError); + + /** + * From MMPXCollectionEngineObserver + * Handles remove by collection path + * + * @param aUriArray, contains a list of file paths to be deleted + * @param aError error code + */ + void HandleRemove(const CDesCArray& aUriArray, TInt aError); + + /** + * From MMPXCollectionEngineObserver + * Handles FindAllL results + * + * @param aMedia media item(s) + * @param aError error code + */ + void HandleFindAll(CMPXMedia* aMedia, TInt aError); + + /** + * From CSession2 + * Service request + * @param aMessage message object + */ + void ServiceL(const RMessage2& aMessage); + +private: + /** + * Dispatch message + * + * @param aMessage message object + * @return message completion code + */ + TInt DispatchMessageL(const RMessage2& aMessage); + + /** + * Set collection mode + * + * @param aMessage message object + */ + void SetModeL(const RMessage2& aMessage); + + /** + * Set client id + * + * @param aMessage message object + */ + void SetClientIdL(const RMessage2& aMessage); + + /** + * Get client id from message + * + * @param aMessage message object + * @reutrn client thread id + */ + TThreadId ClientIdL(const RMessage2& aMessage); + + /** + * Init player from file + * + * @param aMessage message object + */ + void InitFromFileL(const RMessage2& aMessage); + + /** + * Cancel outstanding requests + */ + void CancelRequests(); + + /** + * Set request as async + * + * @param aMessage message object + */ + void SetAsyncL(const RMessage2& aMessage); + + /** + * Complete async request + * + * @param aErr error code + * @param aSlot1 message slot 1 + * @param aVal1 value in the slot 1 + * @param aSlot2 message slot 2 + * @param aVal2 value in the slot 2 + */ + void CompleteAsync(TInt aErr, + TInt aSlot1 = 0, const TDesC8* aVal1 = NULL, + TInt aSlot2 = 0,const TDesC8* aVal2 = NULL, + TInt aSlot3 = 0,const TDesC8* aVal3 = NULL); + + /** + * Writes data from the specified source descriptor to the specified + * message slot + * + * @param aSlot1 message slot 1 + * @param aVal1 value in the slot 1 + * @param aSlot2 message slot 2 + * @param aVal2 value in the slot 2 + * @return KErrNone, if successful, otherwise system error code + */ + TInt DoWriteData(TInt aSlot1 = 0, const TDesC8* aVal1 = NULL, + TInt aSlot2 = 0, const TDesC8* aVal2 = NULL, + TInt aSlot3 = 0, const TDesC8* aVal3 = NULL); + + /** + * Get current selection + * + * @param aMessage message object + */ + void GetSelectionL(const RMessage2& aMessage); + +private: + + /** + * 2nd phase constructor + */ + void ConstructL(); + +private: + CMPXCollectionEngine& iEngine; + CMPXCollectionClientContext* iContext; // Not owned + + RMessage2 iMessage; + TBool iCompleteRequest; + + // + // Data for client, for current request + // + CBufBase* iAsyncBuffer; // buffer for async request + CBufBase* iSyncBuffer; // buffer for sync request + CMPXMedia* iSyncMedia; // Keep reference to result media of sync request + CMPXMedia* iAsyncMedia; // Keep reference to result media of async request + CMPXMessageQueue* iMessageQueue; // Message queue + CMPXMediaArray* iRootMediaArray; // media array for media request of multi selection at root + CMPXCommand* iMediaCommand; // a copy of media request command + CMPXCollectionPath* iMediaPath; // path for media request + }; + +#endif // CMPXCOLLECTIONSESSION_H +