void waitCommand(net::Connection& conn) { bool ok = conn.read(); if (!ok) { perror("ukko: waiting for command failed"); abort(); } Deserializer dser(conn.buf); Call c; serialize(dser, c); }
/* FIXME: Qt manuals is saying this is the wrong way to create thread since version 4.x we better use QThreadPool or similar but for now... */ void SlimIncomingHandler::run() { QString received; QTcpSocket tcpSocket; if (!tcpSocket.setSocketDescriptor(client)) { qDebug() << "tcpSocket rip?"; emit error(); return ; } bExit = false; tcpSocket.write("Slim -- V0.3\r\n"); while (!bExit) // todo mutex to make possible for server to force exit { if (tcpSocket.waitForReadyRead(FITNESSE_TIMEOUT)) { received.append(QString(tcpSocket.readAll())); qDebug() << received; if (received.size() > 6) { SlimDeserializer dser(received); dser.getLength(); CommandExecuter exe(dser.deserialize()); QString result = exe.executeAll(); qDebug() << "resultsend" << result.toUtf8(); tcpSocket.write(result.toUtf8()); // fixme failcheck received =""; } // FIXME... parser if (received.endsWith("bye")) // the later variant(\r\n) used when debugging since telnet adds \r\n break; } else // timeout waitForDataTimeout { // tell client to die since there were no data from fitnesse server to process qDebug() << "socket timeout"; bExit = true; } } qDebug() << "die"; tcpSocket.close(); emit exited(this); }