ITANetAudioStreamingServer.cpp 2.68 KB
Newer Older
Anne's avatar
Anne committed
1 2 3 4
#include <ITANetAudioStreamingServer.h>
#include <ITANetAudioServer.h>

// ITA includes
5 6
#include <ITADataSource.h>
#include <ITANetAudioMessage.h>
Anne's avatar
Anne committed
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
#include <ITAException.h>
#include <ITAStreamInfo.h>

// Vista includes
#include <VistaInterProcComm/Concurrency/VistaThreadLoop.h>
#include <VistaInterProcComm/Connections/VistaConnectionIP.h>
#include <VistaInterProcComm/IPNet/VistaTCPServer.h>
#include <VistaInterProcComm/IPNet/VistaTCPSocket.h>
#include <VistaBase/VistaTimeUtils.h>
#include <VistaInterProcComm/IPNet/VistaIPAddress.h>

// STL
#include <cmath>
#include <cassert>

CITANetAudioStreamingServer::CITANetAudioStreamingServer()
	: m_pInputStream( NULL )
	, m_iUpdateStrategy( AUTO )
25
	, m_pConnection( NULL )
Anne's avatar
Anne committed
26 27 28 29 30 31 32 33
{
	m_pNetAudioServer = new CITANetAudioServer();
	// TODO: Init members
}

bool CITANetAudioStreamingServer::Start(const std::string& sAddress, int iPort)
{
	// TODO: vorrckgabe noch anfangen zu senden (Samples)
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
	if (!m_pNetAudioServer->Start(sAddress, iPort))
		return false;

	m_pConnection = m_pNetAudioServer->GetConnetion();
	m_pMessage->SetConnection( m_pConnection );

	// Get Streaming Parameters from Client
	m_pMessage->ReadAnswer();
	CITANetAudioProtocol::StreamingParameters m_oServerParams = m_pMessage->ReadStreamingParameters();
	
	// Send Streaming Parameters from Client back
	m_pMessage->ResetMessage();
	m_pMessage->SetMessageType(CITANetAudioProtocol::NP_SERVER_OPEN);
	m_pMessage->WriteStreamingParameters(m_oServerParams);
	m_pMessage->WriteMessage();


	Run();
	
	return true;

Anne's avatar
Anne committed
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
}

bool CITANetAudioStreamingServer::IsClientConnected() const
{
	return m_pNetAudioServer->IsConnected();
}

std::string CITANetAudioStreamingServer::GetNetworkAddress() const
{
	return m_pNetAudioServer->GetServerAddress();
}

int CITANetAudioStreamingServer::GetNetworkPort() const
{
	return m_pNetAudioServer->GetNetworkPort();
}
Anne's avatar
Anne committed
71 72 73 74
bool CITANetAudioStreamingServer::LoopBody()
{
	return true;
}
Anne's avatar
Anne committed
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109

void CITANetAudioStreamingServer::Stop() 
{
	m_pNetAudioServer->Disconnect();
}

void CITANetAudioStreamingServer::SetInputStream( ITADatasource* pInStream )
{
	m_pInputStream = pInStream;
}

int CITANetAudioStreamingServer::GetNetStreamBlocklength() const
{
	return m_sfTempTransmitBuffer.GetLength();
}

int CITANetAudioStreamingServer::GetNetStreamNumberOfChannels() const
{
	return m_sfTempTransmitBuffer.channels();
}

void CITANetAudioStreamingServer::SetAutomaticUpdateRate()
{
	m_iUpdateStrategy = AUTO;
}

ITADatasource* CITANetAudioStreamingServer::GetInputStream() const
{
	return m_pInputStream;
}

int CITANetAudioStreamingServer::Transmit(const ITASampleFrame& sfNewSamples, int iNumSamples)
{
	return 0;
}