--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vtprotocolsstub/src/csessionhandler.cpp Mon Nov 23 14:47:47 2009 +0200
@@ -0,0 +1,314 @@
+/*
+* Copyright (c) 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: Session command implementation
+*
+*/
+
+#include "mvtprotocolhandler.h"
+#include "cdatasinkproxy.h"
+#include "cdatasourceproxy.h"
+#include "csessionhandler.h"
+#include "ccommserver.h"
+#include "ch324confighandler.h"
+#include "cvideoconfighandler.h"
+#include "caudioconfighandler.h"
+
+#ifdef _DEBUG
+# define __IF_DEBUG(t) {RDebug::t;}
+#else
+# define __IF_DEBUG(t)
+#endif
+
+// -----------------------------------------------------------------------------
+// TSessionHandler::TSessionHandler
+// Constructor.
+// -----------------------------------------------------------------------------
+//
+TSessionHandler::TSessionHandler(MVtProtocolHandler* aProtocolHandler) : iProtocolHandler(aProtocolHandler)
+ {
+ __IF_DEBUG(Print(_L("VTProto: TSessionHandler::TSessionHandler<")));
+ __IF_DEBUG(Print(_L("VTProto: TSessionHandler::TSessionHandler>")));
+ }
+
+
+// -----------------------------------------------------------------------------
+// CSessionCommand::CSessionCommand
+// Constructor.
+// -----------------------------------------------------------------------------
+//
+CSessionCommand::CSessionCommand(TSessionHandler* aSessionHandler)
+ : iSessionHandler(aSessionHandler)
+ {
+ __IF_DEBUG(Print(_L("VTProto: CSessionCommand::CSessionCommand<")));
+ __IF_DEBUG(Print(_L("VTProto: CSessionCommand::CSessionCommand>")));
+ }
+
+// -----------------------------------------------------------------------------
+// CSessionCommand::~CSessionComman
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CSessionCommand::~CSessionCommand()
+ {
+ __IF_DEBUG(Print(_L("VTProto: CSessionCommand::~CSessionCommand<")));
+ delete iVideoSource;
+ delete iDisplaySink;
+ delete iSessionHandler;
+ __IF_DEBUG(Print(_L("VTProto: CSessionCommand::~CSessionCommand>")));
+ }
+
+// -----------------------------------------------------------------------------
+// CSessionCommand::ConnectToProtocolL
+// This function can be invoked only in the ESetup state.
+// -----------------------------------------------------------------------------
+//
+TInt CSessionCommand::ConnectToProtocolL(MCommServer* aComm)
+ {
+ __IF_DEBUG(Print(_L("VTProto: CSessionCommand::ConnectToProtocolL")));
+ CCommServer* commServer = static_cast<CCommServer*>(aComm);
+ __IF_DEBUG(Print(_L("VTProto: CSessionCommand::ConnectToProtocolL commServer %d"), commServer));
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CSessionCommand::DisconnectFromProtocolL
+// The Disconnect call is valid only when invoked in the EConnecting, and
+// EConnected states.
+// -----------------------------------------------------------------------------
+//
+TInt CSessionCommand::DisconnectFromProtocolL()
+ {
+ __IF_DEBUG(Print(_L("VTProto: CSessionCommand::DisconnectFromProtocolL")));
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CSessionCommand::ResetProtocolL
+// This function is valid only in the ESetup and EInitializing state.
+// -----------------------------------------------------------------------------
+//
+TInt CSessionCommand::ResetProtocolL()
+ {
+ __IF_DEBUG(Print(_L("VTProto: CSessionCommand::ResetProtocolL")));
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CSessionCommand::InitProtocolL
+// This function is valid only in the EIdle state.
+// -----------------------------------------------------------------------------
+//
+TInt CSessionCommand::InitProtocolL(TVtInitInfo& aInitInfo)
+ {
+ __IF_DEBUG(Print(_L("VTProto: CSessionCommand::InitProtocolL")));
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CSessionCommand::AddVideoSinkL
+// Allows an application to provide a media sink for rendering an incoming media bitstream in a
+// logical channel of communication with the peer.
+// -----------------------------------------------------------------------------
+//
+TInt CSessionCommand::AddVideoSinkL(const TUint aChannelId, MVTVideoSink& aDataSink)
+ {
+ __IF_DEBUG(Print(_L("VTProto: CSessionCommand::AddVideoSinkL")));
+ __IF_DEBUG(Print(_L("VTProto: CSessionCommand::AddVideoSinkL aChannelId %d"), aChannelId));
+ iDisplaySink =CDisplaySinkProxy::NewL(&aDataSink);
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CSessionCommand::AddVideoSourceL
+// Allows an application to provide a media source to be associated with a logical channel
+// of communication with the peer.
+// -----------------------------------------------------------------------------
+//
+TInt CSessionCommand::AddVideoSourceL(const TUint aChannelId, MVTVideoSource& aDataSource)
+ {
+ __IF_DEBUG(Print(_L("VTProto: CSessionCommand::AddVideoSourceL")));
+ __IF_DEBUG(Print(_L("VTProto: CSessionCommand::AddVideoSourceL aChannelId %d"), aChannelId));
+ iVideoSource = CVideoSourceProxy::NewL(&aDataSource);
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CSessionCommand::AddAudioSourceL
+// Allows an application to provide a media source to be associated with a logical channel
+// of communication with the peer.
+// -----------------------------------------------------------------------------
+//
+TInt CSessionCommand::AddAudioSourceL(const TUint aChannelId, MVTAudioSource &aDataSource)
+ {
+ __IF_DEBUG(Print(_L("VTProto: CSessionCommand::AddAudioSourceL")));
+ __IF_DEBUG(Print(_L("VTProto: CSessionCommand::AddAudioSourceL aChannelId %d"), aChannelId));
+ CAudioSourceProxy* audioSourceProxy = static_cast<CAudioSourceProxy*>(&aDataSource);
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CSessionCommand::AddAudioSinkL
+// Allows an application to provide a media sink for rendering an incoming media bitstream in a
+// logical channel of communication with the peer.
+// -----------------------------------------------------------------------------
+//
+TInt CSessionCommand::AddAudioSinkL(const TUint aChannelId, MVTAudioSink &aDataSink)
+ {
+ __IF_DEBUG(Print(_L("VTProto: CSessionCommand::AddAudioSinkL")));
+ __IF_DEBUG(Print(_L("VTProto: CSessionCommand::AddAudioSinkL aChannelId %d"), aChannelId));
+ CAudioSinkProxy* audioSinkProxy = static_cast<CAudioSinkProxy*>(&aDataSink);
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CSessionCommand::PauseVideoL
+// For an incoming track (MVTVideoSink) this function pauses sending
+// media to the sink (output device) and stops the sink.
+// -----------------------------------------------------------------------------
+//
+TInt CSessionCommand::PauseVideoL(MVTVideoSource& aTrack)
+ {
+ __IF_DEBUG(Print(_L("VTProto: CSessionCommand::PauseVideoL")));
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CSessionCommand::PauseVideoL
+// For an incoming track (MVtVideoSink) this function pauses sending
+// media to the sink (output device) and stops the sink.
+// -----------------------------------------------------------------------------
+//
+TInt CSessionCommand::PauseVideoL(MVTVideoSink& aTrack)
+ {
+ __IF_DEBUG(Print(_L("VTProto: CSessionCommand::PauseVideoL")));
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CSessionCommand::PauseAudioL
+// For an incoming track (MVTAudioSource) this function pauses sending
+// media to the sink (output device) and stops the sink.
+// -----------------------------------------------------------------------------
+//
+TInt CSessionCommand::PauseAudioL(MVTAudioSource& aTrack)
+ {
+ __IF_DEBUG(Print(_L("VTProto: CSessionCommand::PauseAudioL")));
+ CAudioSourceProxy* audioSourceProxy = static_cast<CAudioSourceProxy*>(&aTrack);
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CSessionCommand::ResumeVideoL
+// Resume a previously paused incoming or outgoing track.
+// -----------------------------------------------------------------------------
+//
+TInt CSessionCommand::ResumeVideoL(MVTVideoSource& aTrack)
+ {
+ __IF_DEBUG(Print(_L("VTProto: CSessionCommand::ResumeVideoL")));
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CSessionCommand::ResumeVideoL
+// Resume a previously paused incoming or outgoing track.
+// -----------------------------------------------------------------------------
+//
+TInt CSessionCommand::ResumeVideoL(MVTVideoSink& aTrack)
+ {
+ __IF_DEBUG(Print(_L("VTProto: CSessionCommand::ResumeVideoL")));
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CSessionCommand::ResumeAudioL
+// Resume a previously paused incoming or outgoing track.
+// -----------------------------------------------------------------------------
+//
+TInt CSessionCommand::ResumeAudioL(MVTAudioSource& aTrack)
+ {
+ __IF_DEBUG(Print(_L("VTProto: CSessionCommand::ResumeAudioL")));
+ CAudioSourceProxy* audioSourceProxy = static_cast<CAudioSourceProxy*>(&aTrack);
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CSessionCommand::CancelAllCommandsL
+// This API is to allow the user to cancel all pending requests.
+// -----------------------------------------------------------------------------
+//
+TInt CSessionCommand::CancelAllCommandsL( )
+ {
+ __IF_DEBUG(Print(_L("VTProto: CSessionCommand::CancelAllCommandsL")));
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CSessionCommand::GetProtocolInterfaceL
+// This API is to allow for extensibility of the protocol interface.
+// -----------------------------------------------------------------------------
+//
+TInt CSessionCommand::GetProtocolInterfaceL(TVtConfigType aType, MVtProtocolCommand*& aProtocolCommand)
+ {
+ __IF_DEBUG(Print(_L("VTProto: CSessionCommand::GetProtocolInterfaceL<")));
+ TInt commandId = 0;
+ if (aType == EVtH324Config)
+ {
+ CH324ConfigCommand* H324ConfigCommand = new (ELeave)CH324ConfigCommand();
+
+ aProtocolCommand = H324ConfigCommand;
+ }
+ else if (aType == EVtVideoEncoderConfig)
+ {
+ CVideoConfigCommand* videoConfigCommand = new (ELeave)CVideoConfigCommand();
+
+ aProtocolCommand = videoConfigCommand;
+ }
+ else
+ {
+ ;
+ }
+ __IF_DEBUG(Print(_L("VTProto: CSessionCommand::GetProtocolInterfaceL aType %d, aProtocolCommand %d>"), aType, aProtocolCommand));
+ return commandId;
+ }
+
+// -----------------------------------------------------------------------------
+// CSessionCommand::DeleteProtocolInterfaceL
+// This APIis to be used to release an interface that was previously obtained using
+// -----------------------------------------------------------------------------
+//
+TInt CSessionCommand::DeleteProtocolInterfaceL(TVtConfigType aType, MVtProtocolCommand* aProtocolCommand)
+ {
+ __IF_DEBUG(Print(_L("VTProto: CSessionCommand::DeleteProtocolInterfaceL<")));
+ TInt commandId = 0;
+ if (aType == EVtH324Config)
+ {
+ CH324ConfigCommand* H324ConfigCommand = static_cast<CH324ConfigCommand*>(aProtocolCommand);
+
+ delete H324ConfigCommand;
+ }
+ else if (aType == EVtVideoEncoderConfig)
+ {
+ CVideoConfigCommand* videoConfigCommand = static_cast<CVideoConfigCommand*>(aProtocolCommand);
+
+ delete videoConfigCommand;
+ }
+ else
+ {
+ ;
+ }
+ __IF_DEBUG(Print(_L("VTProto: CSessionCommand::DeleteProtocolInterfaceL aType, aProtocolCommand %d>"), aType, aProtocolCommand));
+ return commandId;
+ }
+
+// end of file