Mein Kdevelop spuckt folgendes in der Console aus:
QMetaObject::invokeMethod: Unable to handle unregistered datatype 'OpenMode'
Code: Alles auswählen
#include "qteamspeakthread.h"
#include <QMutexLocker>
#include <QTextStream>
#include<iostream>
#include<QMessageBox>
using namespace std;
QTeamspeakThread::QTeamspeakThread()
: QThread()
{
state = 0;
quit = false;
}
void QTeamspeakThread::refresh()
{
QMutexLocker locker(&mutex);
if(!isRunning())
{
start();
}
else
{
cond.wakeOne();
}
}
void QTeamspeakThread::connectToServer(const QString &ip,const QString &port,quint16 qport)
{
QMutexLocker locker(&mutex);
this->hostname = ip;
this->port = port;
this->qport = qport;
state |= 1;
if(!isRunning())
{
start();
}
else
{
cond.wakeOne();
}
}
void QTeamspeakThread::sendRequest(const QString &request)
{
QMutexLocker locker(&mutex);
state |= 2;
query = request;
if(!isRunning())
{
start();
}
else
{
cond.wakeOne();
}
}
void QTeamspeakThread::run()
{
mutex.lock();
QString ServerName = hostname;
quint16 ServerPort = qport;
mutex.unlock();
while(!quit)
{
if(state == 1)
{
socket.connectToHost(ServerName,ServerPort);
if(!socket.waitForConnected())
{
emit error(socket.error(),socket.errorString());
return;
}
while(socket.bytesAvailable() < (int)sizeof(quint8))
{
if(!socket.waitForReadyRead())
{
emit error(socket.error(),socket.errorString());
return;
}
}
qDebug(socket.readLine());
state |= 1;
}
QTextStream *t = new QTextStream(&socket);
if(state & 2)
{
*t<<query<<"\r\n";
t->flush();
while(socket.bytesAvailable() < (int)sizeof(quint8))
{
if(!socket.waitForReadyRead())
{
emit error(socket.error(),socket.errorString());
return;
}
}
qDebug(socket.readLine());
state |= 2;
}
cond.wait(&mutex);
/* *t<<query<<"\r\n";
t->flush();*/
}
}
QTeamspeakThread::~QTeamspeakThread()
{
quit = true;
cond.wakeOne();
wait();
}