fixed socket bug and simplified readClient()

This commit is contained in:
Max-Wilhelm Bruker 2009-04-21 23:17:01 +02:00
parent b4fd5797f5
commit 03847a9b36
3 changed files with 7 additions and 19 deletions

View file

@ -2,13 +2,12 @@
#include "client.h"
Client::Client(QObject *parent)
: QObject(parent)
: QObject(parent), MsgId(0)
{
timer = new QTimer(this);
timer->setInterval(1000);
connect(timer, SIGNAL(timeout()), this, SLOT(checkTimeout()));
MsgId = 0;
status = StatusDisconnected;
socket = new QTcpSocket(this);
socket->setTextModeEnabled(true);

View file

@ -20,6 +20,7 @@
#include <QCoreApplication>
#include <QTextCodec>
#include "server.h"
int main(int argc, char *argv[])
@ -27,6 +28,8 @@ int main(int argc, char *argv[])
QCoreApplication app(argc, argv);
app.setOrganizationName("Cockatrice");
app.setApplicationName("Servatrice");
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
Server server;
if (!server.openDatabase()) {

View file

@ -142,25 +142,11 @@ void ServerSocket::leaveGame()
void ServerSocket::readClient()
{
QTextStream *stream = new QTextStream(this);
stream->setCodec("UTF-8");
QStringList lines;
// Before parsing, everything has to be buffered so that the stream
// can be deleted in order to avoid problems when moving the object
// to another thread while this function is still running.
for (;;) {
QString line = stream->readLine();
while (canReadLine()) {
QString line = QString(readLine()).trimmed();
if (line.isNull())
break;
lines << line;
}
delete stream;
QStringListIterator i(lines);
while (i.hasNext()) {
QString line = i.next();
qDebug(QString("<<< %1").arg(line).toLatin1());
switch (PlayerStatus) {
case StatusNormal: