diff -r 000000000000 -r a2952bb97e68 mpx/playbackframework/playbackserver/inc/mpxplaybackserversession.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mpx/playbackframework/playbackserver/inc/mpxplaybackserversession.h Thu Dec 17 08:55:47 2009 +0200 @@ -0,0 +1,232 @@ +/* +* 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: Playback server session +* +*/ + + +#ifndef CMPXPLAYBACKSESSION_H +#define CMPXPLAYBACKSESSION_H + + +#include +#include +#include +#include +#include "mpxplaybackserverdefs.h" + +class CMPXPlaybackEngine; +class CMPXMessageQueue; + +/** +* Music playback server session +*/ +class CMPXPlaybackSession : public CSession2, + public MMPXPlaybackEngineObserver + { +public: + + /** + * Two-phased constructor. Leaves on failure. + * + * @return The constructed object + */ + static CMPXPlaybackSession* NewL(); + + /** + * C++ constructor + * + */ + CMPXPlaybackSession(); + + /** + * Destructor + */ + ~CMPXPlaybackSession(); + +private: + + /** + * From CSession2 + * Service request + * @param aMessage message object + */ + void ServiceL(const RMessage2& aMessage); + + /** + * Dispatch message + * + * @param aMessage message object + * @return message completion code + */ + void DispatchMessageL( const RMessage2& aMessage, TInt& aMsgHandleResult ); + + /** + * Set playback mode + * + * @param aMessage message object + */ + void SetModeL(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 SetAsync(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); + + + /** + * Writes data from the specified source descriptor to the specified + * message slot + * + * @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 + * @return KErrNone, if successful, otherwise system error code + */ + TInt DoWriteData(TInt aSlot1 = 0, const TDesC8* aVal1 = NULL, + TInt aSlot2 = 0, const TDesC8* aVal2 = NULL); + + /** + * Get current selection + * + * @param aMessage message object + */ + void GetSelectionL(const RMessage2& aMessage); + + /** + * Helper methods for transferring variable sized arrays and objects + */ + + /** + * Create the buffer filled with player UIDs + * + * @param aMessage message object + * @return the size of buffer + */ + TInt CreatePlayerUidsBufferL(const RMessage2& aMessage); + + /** + * Check if player is valid + */ + void CheckPlayerL(); + +private: + + /** + * From MMPXPlaybackEngineObserver + * Handle playback property + * + * @param aProperty the property + * @param aValue the value of the property + * @param aError error code + */ + void HandleProperty(TMPXPlaybackProperty aProperty, + TInt aValue, + TInt aError); + + /** + * From MMPXPlaybackEngineObserver + * Method is called continously until aComplete=ETrue, signifying that + * it is done and there will be no more callbacks + * Only new items are passed each time + * + * @param aPlayer UID of the subplayer + * @param aSubPlayers a list of sub players + * @param aComplete ETrue no more sub players. EFalse more subplayer + * expected + * @param aError error code + */ + void HandleSubPlayerNames(TUid aPlayer, + const MDesCArray* aSubPlayers, + TBool aComplete, + TInt aError); + + /** + * From MMPXPlaybackEngineObserver + * Handle media properties + * + * @param aMedia media object + * @param aError error code + */ + void HandleMedia(CMPXMedia* aMedia, TInt aError); + + /** + * From MMPXPlaybackEngineObserver + * Handle completion of a asynchronous command + * + * @param aCommandResult result of the command, NULL if error + * @param aError error code + */ + void HandlePlaybackCommandComplete(CMPXCommand* aCommandResult, + TInt aError); + +private: + + /** + * 2nd phase constructor + */ + void ConstructL(); + +private: + CMPXPlaybackEngine* iPlayer; + RMessage2 iMessage; + TBool iCompleteRequest; + // + // Data for client, for current request + // + CBufBase* iSyncBuffer; + CBufBase* iAsyncBuffer; + CMPXMedia* iMedia; + CMPXMessageQueue* iMessageQueue; // Message queue + }; + +#endif // CMPXPLAYBACKSESSION_H +