mmlibs/mmfw/inc/mmf/server/mmfurl.h
changeset 0 40261b775718
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmlibs/mmfw/inc/mmf/server/mmfurl.h	Tue Feb 02 01:56:55 2010 +0200
@@ -0,0 +1,189 @@
+// Copyright (c) 2001-2009 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:
+//
+
+
+#ifndef __MMFURL_H_
+#define __MMFURL_H_
+
+#include <mmf/server/mmfdatasource.h>
+#include <mmf/server/mmfdatasink.h>
+#include <s32mem.h>
+
+
+/**
+@publishedAll
+@released
+
+Concrete implementation of a URL data source.
+
+This class is used only to pass information regarding the URL and IAP into the
+controller plugin. IT CANNOT BE USED TO READ DATA FROM A URL. Each of the MDataSource
+APIs are implemented as either returning or leaving with KErrNotSupported as appropriate.
+
+The configuration data for this class is an externalized CMMFUrlParams object.
+
+@see    CMMFUrlParams
+*/
+class CMMFUrlSource : public CBase, public MDataSource
+	{
+public:
+	static MDataSource* NewSourceL();
+	
+	/**
+	Destructor.
+	*/
+	virtual ~CMMFUrlSource();
+
+	/**
+	Returns the URL string.
+
+	For example:
+	@code
+	http://www.symbian.com/clip/mpg
+	@endcode
+
+	@return The URL string.
+	@since	7.0s
+	*/
+	const TDesC& Url() const {return *iUrl;}
+
+	/**
+	Indicates whether the IAP ID should be used.
+
+	@return A boolean indicating if the supplied IAPId should be used. ETrue if the supplied IAPId
+	        should be used. EFalse if the default IAPId should be used.
+
+	@since	7.0s
+	*/
+	TBool UseIAPId() const {return iUseIAPId;}
+
+	/**
+	Returns the Internet Access Point ID.
+
+	@return The IAP ID.
+	@since	7.0s
+	*/
+	TInt IAPId() const {return iIAPId;}
+
+	TFourCC SourceDataTypeCode(TMediaId aMediaId);
+	TInt SetSourceDataTypeCode(TFourCC /*aSourceFourCC*/, TMediaId /*aMediaId*/);
+	void FillBufferL(CMMFBuffer* aBuffer, MDataSink* aConsumer,TMediaId /*aMediaId*/);
+	void BufferEmptiedL(CMMFBuffer* aBuffer);
+	TBool CanCreateSourceBuffer();
+	CMMFBuffer* CreateSourceBufferL(TMediaId /*aMediaId*/, TBool &aReference);
+	CMMFBuffer* CreateSourceBufferL(TMediaId aMediaId, CMMFBuffer& /*aSinkBuffer*/, TBool &aReference);
+	TInt SourceThreadLogon(MAsyncEventHandler& /*aEventHandler*/);
+	void SourceThreadLogoff();
+	void NegotiateSourceL(MDataSink& /* aDataSink*/);
+	TBool SourceSampleConvert();
+	void SourcePrimeL();
+	void SourcePlayL();
+	void SourcePauseL();
+	void SourceStopL();
+	void SetSourcePrioritySettings(const TMMFPrioritySettings& /*aPrioritySettings*/);
+	void SourceCustomCommand(TMMFMessage& aMessage);
+
+private:
+	CMMFUrlSource();
+	void ConstructSourceL(const TDesC8& aInitData);
+private:
+	HBufC* iUrl;
+	TBool iUseIAPId;
+	TInt iIAPId;
+	};
+
+
+
+/**
+@publishedAll
+@released
+
+Concrete implementation of a URL data sink.
+
+This class is used only to pass information regarding the URL and IAP into the
+controller plugin.  IT CANNOT BE USED TO WRITE DATA TO A URL.  Each of the MDataSink
+APIs are implemented as either returning or leaving with KErrNotSupported as appropriate.
+
+The configuration data for this class is an externalized CMMFUrlParams object.
+
+@see    CMMFUrlParams
+*/
+class CMMFUrlSink : public CBase, public MDataSink
+	{
+public:
+	static MDataSink* NewSinkL();
+	virtual ~CMMFUrlSink();
+
+	/**
+	Returns the URL string.
+
+	For example:
+	@code
+	http://www.symbian.com/clip/mpg
+	@endcode
+
+	@return The URL string.
+
+	@since  7.0s
+	*/
+	const TDesC& Url() const {return *iUrl;}
+
+	/**
+	Indicates whether the IAP ID should be used.
+
+	@return A boolean indicating if the supplied IAP ID should be used. ETrue if the supplied ID
+	        should be used, EFalse if the default IAP ID should be used.
+
+	@since	7.0s
+	*/
+	TBool UseIAPId() const {return iUseIAPId;}
+
+	/**
+	Returns the Internet Access Point ID.
+
+	@return The IAP ID.
+
+	@since  7.0s
+	*/
+	TInt IAPId() const {return iIAPId;}
+
+	TFourCC SinkDataTypeCode(TMediaId /*aMediaId*/);
+	TInt SetSinkDataTypeCode(TFourCC /*aSinkFourCC*/, TMediaId /*aMediaId*/);
+	void EmptyBufferL(CMMFBuffer* aBuffer, MDataSource* aSupplier, TMediaId /*aMediaId*/);
+	void BufferFilledL(CMMFBuffer* aBuffer);
+	TBool CanCreateSinkBuffer();
+	CMMFBuffer* CreateSinkBufferL(TMediaId /*aMediaId*/, TBool &aReference);
+	TInt SinkThreadLogon(MAsyncEventHandler& /*aEventHandler*/);
+	void SinkThreadLogoff();
+	void NegotiateL(MDataSource& /* aDataSource*/);
+	void SinkPrimeL();
+	void SinkPlayL();
+	void SinkPauseL();
+	void SinkStopL();
+	void SetSinkPrioritySettings(const TMMFPrioritySettings& /*aPrioritySettings*/);
+	void SinkCustomCommand(TMMFMessage& aMessage);
+
+private:
+	CMMFUrlSink();
+	void ConstructSinkL(const TDesC8& aInitData);
+private:
+	HBufC* iUrl;
+	TBool iUseIAPId;
+	TInt iIAPId;
+	};
+
+
+
+#endif