Make the reads blocking. We'll put those in a thread.

It'll be much easier to maintaining the upcoming code.

svn path=/branches/work/~ervin/sodep/; revision=923377
This commit is contained in:
Kevin Ottens 2009-02-08 17:31:13 +00:00
parent ac708dc8d3
commit 01f11ad43b
2 changed files with 24 additions and 12 deletions

View File

@ -125,6 +125,10 @@ inline void sodepWrite(QIODevice &io, const SodepMessage &message)
inline double sodepReadDouble(QIODevice &io) inline double sodepReadDouble(QIODevice &io)
{ {
while (io.bytesAvailable()<8) {
io.waitForReadyRead(-1);
}
double d; double d;
char *out = (char*)&d; char *out = (char*)&d;
char in[8]; char in[8];
@ -140,6 +144,10 @@ inline double sodepReadDouble(QIODevice &io)
inline qint32 sodepReadInt32(QIODevice &io) inline qint32 sodepReadInt32(QIODevice &io)
{ {
while (io.bytesAvailable()<4) {
io.waitForReadyRead(-1);
}
qint32 i; qint32 i;
char *out = (char*)&i; char *out = (char*)&i;
char in[4]; char in[4];
@ -155,6 +163,10 @@ inline qint32 sodepReadInt32(QIODevice &io)
inline qint64 sodepReadInt64(QIODevice &io) inline qint64 sodepReadInt64(QIODevice &io)
{ {
while (io.bytesAvailable()<8) {
io.waitForReadyRead(-1);
}
qint64 i; qint64 i;
char *out = (char*)&i; char *out = (char*)&i;
char in[8]; char in[8];
@ -172,6 +184,10 @@ inline QString sodepReadString(QIODevice &io)
{ {
qint32 length = sodepReadInt32(io); qint32 length = sodepReadInt32(io);
while (io.bytesAvailable()<length) {
io.waitForReadyRead(-1);
}
char *data = new char[length+1]; char *data = new char[length+1];
io.read(data, length); io.read(data, length);
data[length] = '\0'; data[length] = '\0';
@ -186,6 +202,10 @@ inline SodepValue sodepReadValue(QIODevice &io)
{ {
SodepValue result; SodepValue result;
while (io.bytesAvailable()<1) {
io.waitForReadyRead(-1);
}
char code; char code;
io.getChar(&code); io.getChar(&code);
@ -225,6 +245,10 @@ inline SodepValue sodepReadValue(QIODevice &io)
inline SodepFault sodepReadFault(QIODevice &io) inline SodepFault sodepReadFault(QIODevice &io)
{ {
while (io.bytesAvailable()<1) {
io.waitForReadyRead(-1);
}
char code; char code;
io.getChar(&code); io.getChar(&code);

View File

@ -112,9 +112,6 @@ private slots:
message.setData(value); message.setData(value);
sodepWrite(m_socket, message); sodepWrite(m_socket, message);
QVERIFY(m_socket.waitForReadyRead(5000));
QTest::qWait(1000);
SodepMessage reply = sodepReadMessage(m_socket); SodepMessage reply = sodepReadMessage(m_socket);
m_socket.close(); m_socket.close();
@ -134,9 +131,6 @@ private slots:
SodepMessage message("/", "getServices"); SodepMessage message("/", "getServices");
sodepWrite(m_socket, message); sodepWrite(m_socket, message);
QVERIFY(m_socket.waitForReadyRead(5000));
QTest::qWait(1000);
SodepMessage reply = sodepReadMessage(m_socket); SodepMessage reply = sodepReadMessage(m_socket);
m_socket.close(); m_socket.close();
@ -183,9 +177,6 @@ private slots:
message.setData(data); message.setData(data);
sodepWrite(m_socket, message); sodepWrite(m_socket, message);
QVERIFY(m_socket.waitForReadyRead(5000));
QTest::qWait(1000);
SodepMessage reply = sodepReadMessage(m_socket); SodepMessage reply = sodepReadMessage(m_socket);
m_socket.close(); m_socket.close();
@ -217,9 +208,6 @@ private slots:
message.setData(value); message.setData(value);
sodepWrite(m_socket, message); sodepWrite(m_socket, message);
QVERIFY(m_socket.waitForReadyRead(5000));
QTest::qWait(1000);
SodepMessage reply = sodepReadMessage(m_socket); SodepMessage reply = sodepReadMessage(m_socket);
m_socket.close(); m_socket.close();