--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/natfw/natfwconnectionmultiplexer/src/cncmmediasource.cpp Tue Feb 02 01:04:58 2010 +0200
@@ -0,0 +1,245 @@
+/*
+* Copyright (c) 2006-2008 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: Source for multiplexer, where Media Wrapper is mounted to
+*
+*/
+
+
+
+
+#include "cncmmediasource.h"
+#include "ncmconnectionmultiplexerlogs.h"
+#include "mncmmediasourceobserver.h"
+#include "natfwmediawrapper.h"
+#include "mncmsourceobserver.h"
+#include "ncmconnectionmultiplexerassert.h"
+
+// ---------------------------------------------------------------------------
+// CNcmMediaSource::CNcmMediaSource
+// ---------------------------------------------------------------------------
+//
+CNcmMediaSource::CNcmMediaSource(
+ MNcmMediaSourceObserver& aMediaObserver,
+ MNATFWMediaWrapper& aMediaWrapper ) :
+ iMediaObserver( aMediaObserver ),
+ iMediaWrapper( aMediaWrapper ),
+ iReceivingState( EStreamingStateUnknown )
+ {
+ __CONNECTIONMULTIPLEXER( "CNcmMediaSource::CNcmMediaSource" )
+ }
+
+
+// ---------------------------------------------------------------------------
+// CNcmMediaSource::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CNcmMediaSource::ConstructL( const RSocketServ& aSocketServ,
+ const TInetAddr& aLocalAddr )
+ {
+ __CONNECTIONMULTIPLEXER( "CNcmMediaSource::ConstructL" )
+
+ iMediaWrapper.RegisterMediaWrapperObserverL( this, aSocketServ,
+ aLocalAddr );
+ }
+
+
+// ---------------------------------------------------------------------------
+// CNcmMediaSource::NewL
+// ---------------------------------------------------------------------------
+//
+CNcmMediaSource* CNcmMediaSource::NewL(
+ MNcmMediaSourceObserver& aMediaObserver,
+ MNATFWMediaWrapper& aMediaWrapper,
+ const RSocketServ& aSocketServ,
+ const TInetAddr& aLocalAddr )
+ {
+ __CONNECTIONMULTIPLEXER( "CNcmMediaSource::NewL" )
+
+ CNcmMediaSource* self = CNcmMediaSource::NewLC(
+ aMediaObserver, aMediaWrapper, aSocketServ, aLocalAddr );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+// ---------------------------------------------------------------------------
+// CNcmMediaSource::NewLC
+// ---------------------------------------------------------------------------
+//
+CNcmMediaSource* CNcmMediaSource::NewLC(
+ MNcmMediaSourceObserver& aMediaObserver,
+ MNATFWMediaWrapper& aMediaWrapper,
+ const RSocketServ& aSocketServ,
+ const TInetAddr& aLocalAddr )
+ {
+ __CONNECTIONMULTIPLEXER( "CNcmMediaSource::NewLC" )
+
+ CNcmMediaSource* self =
+ new( ELeave ) CNcmMediaSource( aMediaObserver, aMediaWrapper );
+ CleanupStack::PushL( self );
+ self->ConstructL( aSocketServ, aLocalAddr );
+ return self;
+ }
+
+
+// ---------------------------------------------------------------------------
+// CNcmMediaSource::~CNcmMediaSource
+// ---------------------------------------------------------------------------
+//
+CNcmMediaSource::~CNcmMediaSource()
+ {
+ __CONNECTIONMULTIPLEXER( "CNcmMediaSource::~CNcmMediaSource" )
+ iMessageObserver = NULL;
+ }
+
+
+// ---------------------------------------------------------------------------
+// CNcmMediaSource::RegisterMessageObserver
+// ---------------------------------------------------------------------------
+//
+void CNcmMediaSource::RegisterMessageObserver(
+ MNcmSourceObserver& aMessageObserver )
+ {
+ __CONNECTIONMULTIPLEXER( "CNcmMediaSource::RegisterMessageObserver" )
+
+ iMessageObserver = &aMessageObserver;
+ }
+
+
+// ---------------------------------------------------------------------------
+// CNcmMediaSource::UnregisterMessageObserver
+// ---------------------------------------------------------------------------
+//
+void CNcmMediaSource::UnregisterMessageObserver(
+ const MNcmSourceObserver& aMessageObserver )
+ {
+ __CONNECTIONMULTIPLEXER( "CNcmMediaSource::UnRegisterMessageObserver" )
+ __CONNECTIONMULTIPLEXER_ASSERT_L(
+ &aMessageObserver == iMessageObserver, KErrArgument );
+
+ iMessageObserver = NULL;
+ }
+
+
+// ---------------------------------------------------------------------------
+// CNcmMediaSource::SetReceivingState
+// ---------------------------------------------------------------------------
+//
+void CNcmMediaSource::SetReceivingState( TNATFWStreamingState aState )
+ {
+ __CONNECTIONMULTIPLEXER( "CNcmMediaSource::SetReceivingState" )
+
+ iReceivingState = aState;
+ }
+
+
+// ---------------------------------------------------------------------------
+// From class MMultiplexerSourceBase
+//
+// CNcmMediaSource::PutMessage
+// ---------------------------------------------------------------------------
+//
+void CNcmMediaSource::PutMessageL( const TDesC8& aMessage )
+ {
+ __CONNECTIONMULTIPLEXER( "CNcmMediaSource::PutMessage" )
+
+ if ( EStreamingStateActive == iReceivingState )
+ {
+ TRAP_IGNORE( iMediaWrapper.SendL( aMessage ) )
+ }
+ }
+
+
+// ---------------------------------------------------------------------------
+// From class MNATFWMediaWrapperObserver
+//
+// CNcmMediaSource::SendingCompleted
+// ---------------------------------------------------------------------------
+//
+void CNcmMediaSource::SendingCompleted( TInt aError )
+ {
+ if ( aError )
+ {
+ iMediaObserver.WrapperSenderError( iMediaWrapper.StreamId(), aError );
+ }
+ }
+
+
+// ---------------------------------------------------------------------------
+// From class MNATFWMediaWrapperObserver
+//
+// CNcmMediaSource::ReceivedFrom
+// ---------------------------------------------------------------------------
+//
+TInt CNcmMediaSource::ReceivedFrom( const TUint /*aStreamId*/,
+ TDes8& aReceiveBuffer )
+ {
+ __CONNECTIONMULTIPLEXER( "CNcmMediaSource::ReceivedFrom" )
+
+ if ( iMessageObserver )
+ {
+ if ( iFirstMediaPacketIsSent )
+ {
+ iMessageObserver->OutgoingMessageAvailable(
+ aReceiveBuffer, NULL, KAFUnspec );
+ }
+ else
+ {
+ iMessageObserver->OutgoingMessageAvailable(
+ aReceiveBuffer, this, KAFUnspec );
+ }
+ }
+
+ return KErrNone;
+ }
+
+
+// ---------------------------------------------------------------------------
+// From class MNATFWMediaWrapperObserver
+//
+// CNcmMediaSource::GetNewFreePort
+// ---------------------------------------------------------------------------
+//
+void CNcmMediaSource::GetNewFreePort( TUint& aPort )
+ {
+ __CONNECTIONMULTIPLEXER( "CNcmMediaSource::GetNewFreePort" )
+
+ iMediaObserver.GetFreePort( iMediaWrapper.StreamId(), aPort );
+ }
+
+
+// ---------------------------------------------------------------------------
+// From class MNcmSenderObserver
+//
+// CNcmMediaSource::MessageSent
+// ---------------------------------------------------------------------------
+//
+void CNcmMediaSource::MessageSent()
+ {
+ __CONNECTIONMULTIPLEXER( "CNcmMediaSource::MessageSent" )
+ iFirstMediaPacketIsSent = ETrue;
+ iMediaObserver.FirstMediaPacketSent( iMediaWrapper.StreamId() );
+ }
+
+
+// ---------------------------------------------------------------------------
+// From class MNcmSenderObserver
+//
+// CNcmMediaSource::MessageSentFailure
+// ---------------------------------------------------------------------------
+//
+void CNcmMediaSource::MessageSentFailure( TInt /*aError*/ )
+ {
+ __CONNECTIONMULTIPLEXER( "CNcmMediaSource::MessageSentFailure" )
+ }