multimediacommscontroller/mmccanysourcesink/src/mccanysource.cpp
branchrcs
changeset 49 64c62431ac08
parent 0 1bce908db942
--- a/multimediacommscontroller/mmccanysourcesink/src/mccanysource.cpp	Mon Aug 23 17:50:26 2010 +0300
+++ b/multimediacommscontroller/mmccanysourcesink/src/mccanysource.cpp	Mon Sep 06 17:32:13 2010 +0530
@@ -24,6 +24,7 @@
 #include "mccanysourcesinklogs.h"
 #include "mccinternalevents.h"
 #include "mccinternaldef.h"
+#include "mccdatareceiver.h"
 
 
 // ============================ MEMBER FUNCTIONS ===============================
@@ -48,6 +49,7 @@
 void CMccAnySource::ConstructSourceL( const TDesC8& /*aInitData*/ )
     {    	
     __ANYSOURCESINK_CONTROLL( "CMccAnySource::ConstructSourceL" )
+    iDataReceiver = CMccDataReceiver::NewL( *this );
     }
 	    
 // -----------------------------------------------------------------------------
@@ -65,6 +67,11 @@
 CMccAnySource::~CMccAnySource()
     {   
     __ANYSOURCESINK_CONTROLL( "CMccAnySource::~CMccAnySource" )
+    
+    iBufferToBeFilled = NULL;
+    iConsumer = NULL;
+    
+    delete iDataReceiver;
     }
 
 	
@@ -213,12 +220,13 @@
 // -----------------------------------------------------------------------------
 //
 void CMccAnySource::FillBufferL( 
-	CMMFBuffer* /*aBuffer*/,
-    MDataSink* /*aConsumer*/,
+	CMMFBuffer* aBuffer,
+    MDataSink* aConsumer,
     TMediaId /*aMediaId*/ )
 	{
 	__ANYSOURCESINK_CONTROLL( "CMccAnySource::FillBufferL" )
-	User::Leave( KErrNotSupported );
+	iBufferToBeFilled = aBuffer;
+	iConsumer = aConsumer;
 	}	
                   
 // -----------------------------------------------------------------------------
@@ -259,5 +267,27 @@
 	    }
 	}
 
+// -----------------------------------------------------------------------------
+// CMccAnySource::DataReceivedL
+// -----------------------------------------------------------------------------
+//	
+void CMccAnySource::DataReceivedL( const TDesC8& aData )
+    {
+    __ANYSOURCESINK_CONTROLL( "CMccAnySource::DataReceivedL, Entry" )
+            
+    if ( iBufferToBeFilled && iConsumer )
+        {
+        CMMFDataBuffer* buffer = static_cast<CMMFDataBuffer*>(iBufferToBeFilled);
+
+        if (buffer->Data().MaxLength() >= aData.Length())
+            {            
+            buffer->Data().Copy( aData );
+            iConsumer->BufferFilledL( iBufferToBeFilled );
+        	iBufferToBeFilled = 0;
+        	iConsumer = 0;
+      		}      		
+        }
+    }
+
 // End of file