summaryrefslogtreecommitdiff
path: root/pluginRoutingInterfaceTCP/TcpServer.cpp
blob: 1e63f8b7797dd168e908d2ec9f59d0bf3eb25e0e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
/*
 * TcpServer.cpp
 *
 *  Created on: Apr 6, 2011
 *      Author: blacky
 */

#include "TcpServer.h"

#include <iostream>
#include <QList>
#include <QByteArray>

using namespace std;

TcpServer::TcpServer(int ListenPort) {
	 connect(this, SIGNAL(newConnection()), this, SLOT(receivedCommand()));
	 if (! this->listen(QHostAddress::Any,ListenPort)) {
		 cout<<" Problem: "<<this->errorString().toStdString()<<endl;
	 }
}

TcpServer::~TcpServer() {
	// TODO Auto-generated destructor stub
}

void TcpServer::registerAudioManager(RoutingReceiveInterface *audiomanager_) {
	audiomanager=audiomanager_;
}

void TcpServer::receivedCommand() {
	socket=this->nextPendingConnection ();
	connect(socket, SIGNAL(readyRead()), this, SLOT(startRead()));
	cout<<"got new command"<<endl;
}

void TcpServer::startRead() {
	QByteArray buffer;
	int answer;
	bool earlyMode=false;
	buffer=socket->readAll();
	QList<QByteArray> bList=buffer.split('#');
	switch (bList.at(0).toInt()) {
		case MSG_registerDomain:
			if (QString(bList.at(4))=="true") {
				earlyMode=true;
			}
			answer=audiomanager->registerDomain((char*)bList.at(1).data(),(char*)bList.at(2).data(),(char*)bList.at(3).data(),earlyMode);
			socket->write(QByteArray::number(answer));
			break;
		case MSG_registerGateway:
			answer=audiomanager->registerGateway((char*)bList.at(1).data(),(char*)bList.at(2).data(),(char*)bList.at(3).data(),(char*)bList.at(4).data(),(char*)bList.at(5).data(),(char*)bList.at(6).data());
			socket->write(QByteArray::number(answer));
			break;
		case MSG_registerSink:
			answer=audiomanager->registerSink((char*)bList.at(1).data(),(char*)bList.at(2).data(),(char*)bList.at(3).data());
			socket->write(QByteArray::number(answer));
			break;
		case MSG_registerSource:
			answer=audiomanager->registerSource((char*)bList.at(1).data(),(char*)bList.at(2).data(),(char*)bList.at(3).data());
			socket->write(QByteArray::number(answer));
			break;
		case MSG_peekDomain:
			answer=audiomanager->peekDomain((char*)bList.at(1).data());
			socket->write(QByteArray::number(answer));
			break;
	}
}