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;
}
}
|