sl@0: // Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // mmrcserverphysicaladaptation.h sl@0: // sl@0: // sl@0: sl@0: #ifndef MMRCPHYSICALADAPTATION_H_ sl@0: #define MMRCPHYSICALADAPTATION_H_ sl@0: sl@0: #include <e32std.h> sl@0: #include <e32base.h> sl@0: #include <a3f/a3fbase.h> sl@0: #include <a3f/a3f_trace_utils.h> sl@0: #include "mmrcclientserver.h" sl@0: #include "maudiostreamadaptationobserver.h" sl@0: sl@0: class MLogicalChain; sl@0: class MAudioContext; sl@0: class CFourCCConvertor; sl@0: class CMMRCServerSideAdaptationResponseAO; sl@0: class CAudioStreamAdaptation; sl@0: class CMMRCServerSession; sl@0: sl@0: //------------------------------------------------------------------------------------ sl@0: // CMMRCClientSideServerRequestToAdaptationAO sl@0: //------------------------------------------------------------------------------------ sl@0: sl@0: /** sl@0: @internalComponent sl@0: sl@0: This class implements the proxy to the Physical adaptation. sl@0: The main purpose of this class is to communicate with the physical resource manager. sl@0: */ sl@0: NONSHARABLE_CLASS( CMMRCClientSideServerRequestToAdaptationAO ): public CActive, public MAudioStreamAdaptationObserver sl@0: { sl@0: public: sl@0: /** sl@0: * Constructs, and returns a pointer to, a new CMMRCClientSideServerRequestToAdaptationAO object. sl@0: * Leaves on failure. sl@0: * @param CMMRCServerController& A reference on the MMRC Server controller sl@0: * @return CMMRCClientSideServerRequestToAdaptationAO* A pointer to newly created utlitly object. sl@0: */ sl@0: IMPORT_C static CMMRCClientSideServerRequestToAdaptationAO* NewL( ); sl@0: sl@0: /** sl@0: * Destructor. sl@0: */ sl@0: ~CMMRCClientSideServerRequestToAdaptationAO( ); sl@0: sl@0: public: sl@0: void Initialize(CMMRCServerSession* aServerSession, sl@0: CMMRCServerSideAdaptationResponseAO* aCallback, sl@0: RThread* aClientThread, sl@0: const CFourCCConvertor& aFourCCConvertor); sl@0: sl@0: void Service(TUint aRequestType); sl@0: sl@0: /** sl@0: * Callback in case of timeout sl@0: */ sl@0: void ResourceRequestAcknowledgmentTimeout( ); sl@0: sl@0: // from MAudioStreamAdaptationObserver sl@0: void PhysicalAdaptationEvent(TPhysicalEvent aEvent, TInt aError); sl@0: void StateEvent(TInt aReason, TAudioState aNewState); sl@0: void AddProcessingUnitComplete(TUid aType, TInt aError); sl@0: void RemoveProcessingUnitComplete(TUid aType, TInt aError); sl@0: void ProcessingFinished(); sl@0: void FlushComplete(TInt aError); sl@0: sl@0: //From CActive sl@0: virtual void RunL(); sl@0: virtual void DoCancel(); sl@0: sl@0: private: sl@0: /** sl@0: * By default Symbian 2nd phase constructor is private. sl@0: * @param CMMRCServerController& A reference on the MMRC Server controller sl@0: */ sl@0: CMMRCClientSideServerRequestToAdaptationAO( ); sl@0: sl@0: void TidyUp(); sl@0: sl@0: /** sl@0: * By default Symbian 2nd phase constructor is private. sl@0: */ sl@0: void ConstructL( ); sl@0: sl@0: private: sl@0: //owned sl@0: CAudioStreamAdaptation* iStreamAdaptation; sl@0: sl@0: //not owned sl@0: RThread* iClientThread; sl@0: CMMRCServerSession* iServerSession; sl@0: CMMRCServerSideAdaptationResponseAO* iMMRCServerSideAdaptationResponseAO; sl@0: sl@0: MLogicalChain* iLogicalChainRequested; sl@0: MLogicalChain* iLogicalChainLastCommited; sl@0: MAudioContext* iAudioContext; sl@0: TInt iRequestsProcessed; sl@0: TUint iRequestType; sl@0: }; sl@0: sl@0: //------------------------------------------------------------------------------------ sl@0: // CMMRCServerSideAdaptationResponseAO sl@0: //------------------------------------------------------------------------------------ sl@0: sl@0: /** sl@0: @internalComponent sl@0: sl@0: */ sl@0: NONSHARABLE_CLASS( CMMRCServerSideAdaptationResponseAO ) : public CActive sl@0: { sl@0: public: sl@0: ~CMMRCServerSideAdaptationResponseAO(); sl@0: static CMMRCServerSideAdaptationResponseAO* NewL(); sl@0: void Initialize(CMMRCServerSession* aServerSession, RThread* iServerThread ); sl@0: void Service(TMMRCAdaptationToServerRequestResults aEvent, TInt aError); sl@0: void StartAdaptationListening(); sl@0: private: sl@0: CMMRCServerSideAdaptationResponseAO(); sl@0: void ConstructL( ); sl@0: void RunL( ); sl@0: void DoCancel( ); sl@0: sl@0: private: sl@0: //not owned sl@0: CMMRCServerSession* iMMRCServerSession; sl@0: RThread* iServerThread; sl@0: sl@0: TMMRCAdaptationToServerRequestResults iEvent; sl@0: TInt iError; sl@0: }; sl@0: sl@0: #endif /*MMRCPHYSICALADAPTATION_H_*/