diff -r 000000000000 -r 1bce908db942 natfw/natfwconnectionmultiplexer/src/cncmmediasource.cpp --- /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" ) + }