williamr@2: // Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@4: // under the terms of "Eclipse Public License v1.0" williamr@2: // which accompanies this distribution, and is available williamr@4: // at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // williamr@2: williamr@2: williamr@2: #ifndef __MMFURL_H_ williamr@2: #define __MMFURL_H_ williamr@2: williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: williamr@2: williamr@2: /** williamr@2: @publishedAll williamr@2: @released williamr@2: williamr@2: Concrete implementation of a URL data source. williamr@2: williamr@2: This class is used only to pass information regarding the URL and IAP into the williamr@2: controller plugin. IT CANNOT BE USED TO READ DATA FROM A URL. Each of the MDataSource williamr@2: APIs are implemented as either returning or leaving with KErrNotSupported as appropriate. williamr@2: williamr@2: The configuration data for this class is an externalized CMMFUrlParams object. williamr@2: williamr@2: @see CMMFUrlParams williamr@2: */ williamr@2: class CMMFUrlSource : public CBase, public MDataSource williamr@2: { williamr@2: public: williamr@2: static MDataSource* NewSourceL(); williamr@2: williamr@2: /** williamr@2: Destructor. williamr@2: */ williamr@2: virtual ~CMMFUrlSource(); williamr@2: williamr@2: /** williamr@2: Returns the URL string. williamr@2: williamr@2: For example: williamr@2: @code williamr@2: http://www.symbian.com/clip/mpg williamr@2: @endcode williamr@2: williamr@2: @return The URL string. williamr@2: @since 7.0s williamr@2: */ williamr@2: const TDesC& Url() const {return *iUrl;} williamr@2: williamr@2: /** williamr@2: Indicates whether the IAP ID should be used. williamr@2: williamr@2: @return A boolean indicating if the supplied IAPId should be used. ETrue if the supplied IAPId williamr@2: should be used. EFalse if the default IAPId should be used. williamr@2: williamr@2: @since 7.0s williamr@2: */ williamr@2: TBool UseIAPId() const {return iUseIAPId;} williamr@2: williamr@2: /** williamr@2: Returns the Internet Access Point ID. williamr@2: williamr@2: @return The IAP ID. williamr@2: @since 7.0s williamr@2: */ williamr@2: TInt IAPId() const {return iIAPId;} williamr@2: williamr@2: TFourCC SourceDataTypeCode(TMediaId aMediaId); williamr@2: TInt SetSourceDataTypeCode(TFourCC /*aSourceFourCC*/, TMediaId /*aMediaId*/); williamr@2: void FillBufferL(CMMFBuffer* aBuffer, MDataSink* aConsumer,TMediaId /*aMediaId*/); williamr@2: void BufferEmptiedL(CMMFBuffer* aBuffer); williamr@2: TBool CanCreateSourceBuffer(); williamr@2: CMMFBuffer* CreateSourceBufferL(TMediaId /*aMediaId*/, TBool &aReference); williamr@2: CMMFBuffer* CreateSourceBufferL(TMediaId aMediaId, CMMFBuffer& /*aSinkBuffer*/, TBool &aReference); williamr@2: TInt SourceThreadLogon(MAsyncEventHandler& /*aEventHandler*/); williamr@2: void SourceThreadLogoff(); williamr@2: void NegotiateSourceL(MDataSink& /* aDataSink*/); williamr@2: TBool SourceSampleConvert(); williamr@2: void SourcePrimeL(); williamr@2: void SourcePlayL(); williamr@2: void SourcePauseL(); williamr@2: void SourceStopL(); williamr@2: void SetSourcePrioritySettings(const TMMFPrioritySettings& /*aPrioritySettings*/); williamr@2: void SourceCustomCommand(TMMFMessage& aMessage); williamr@2: williamr@2: private: williamr@2: CMMFUrlSource(); williamr@2: void ConstructSourceL(const TDesC8& aInitData); williamr@2: private: williamr@2: HBufC* iUrl; williamr@2: TBool iUseIAPId; williamr@2: TInt iIAPId; williamr@2: }; williamr@2: williamr@2: williamr@2: williamr@2: /** williamr@2: @publishedAll williamr@2: @released williamr@2: williamr@2: Concrete implementation of a URL data sink. williamr@2: williamr@2: This class is used only to pass information regarding the URL and IAP into the williamr@2: controller plugin. IT CANNOT BE USED TO WRITE DATA TO A URL. Each of the MDataSink williamr@2: APIs are implemented as either returning or leaving with KErrNotSupported as appropriate. williamr@2: williamr@2: The configuration data for this class is an externalized CMMFUrlParams object. williamr@2: williamr@2: @see CMMFUrlParams williamr@2: */ williamr@2: class CMMFUrlSink : public CBase, public MDataSink williamr@2: { williamr@2: public: williamr@2: static MDataSink* NewSinkL(); williamr@2: virtual ~CMMFUrlSink(); williamr@2: williamr@2: /** williamr@2: Returns the URL string. williamr@2: williamr@2: For example: williamr@2: @code williamr@2: http://www.symbian.com/clip/mpg williamr@2: @endcode williamr@2: williamr@2: @return The URL string. williamr@2: williamr@2: @since 7.0s williamr@2: */ williamr@2: const TDesC& Url() const {return *iUrl;} williamr@2: williamr@2: /** williamr@2: Indicates whether the IAP ID should be used. williamr@2: williamr@2: @return A boolean indicating if the supplied IAP ID should be used. ETrue if the supplied ID williamr@2: should be used, EFalse if the default IAP ID should be used. williamr@2: williamr@2: @since 7.0s williamr@2: */ williamr@2: TBool UseIAPId() const {return iUseIAPId;} williamr@2: williamr@2: /** williamr@2: Returns the Internet Access Point ID. williamr@2: williamr@2: @return The IAP ID. williamr@2: williamr@2: @since 7.0s williamr@2: */ williamr@2: TInt IAPId() const {return iIAPId;} williamr@2: williamr@2: TFourCC SinkDataTypeCode(TMediaId /*aMediaId*/); williamr@2: TInt SetSinkDataTypeCode(TFourCC /*aSinkFourCC*/, TMediaId /*aMediaId*/); williamr@2: void EmptyBufferL(CMMFBuffer* aBuffer, MDataSource* aSupplier, TMediaId /*aMediaId*/); williamr@2: void BufferFilledL(CMMFBuffer* aBuffer); williamr@2: TBool CanCreateSinkBuffer(); williamr@2: CMMFBuffer* CreateSinkBufferL(TMediaId /*aMediaId*/, TBool &aReference); williamr@2: TInt SinkThreadLogon(MAsyncEventHandler& /*aEventHandler*/); williamr@2: void SinkThreadLogoff(); williamr@2: void NegotiateL(MDataSource& /* aDataSource*/); williamr@2: void SinkPrimeL(); williamr@2: void SinkPlayL(); williamr@2: void SinkPauseL(); williamr@2: void SinkStopL(); williamr@2: void SetSinkPrioritySettings(const TMMFPrioritySettings& /*aPrioritySettings*/); williamr@2: void SinkCustomCommand(TMMFMessage& aMessage); williamr@2: williamr@2: private: williamr@2: CMMFUrlSink(); williamr@2: void ConstructSinkL(const TDesC8& aInitData); williamr@2: private: williamr@2: HBufC* iUrl; williamr@2: TBool iUseIAPId; williamr@2: TInt iIAPId; williamr@2: }; williamr@2: williamr@2: williamr@2: williamr@2: #endif