fixed YACReader <-> YACReaderLibrary communication

updated QsLog sources
This commit is contained in:
Luis Ángel San Martín
2014-04-05 09:56:47 +02:00
parent 5155545529
commit 202b974526
9 changed files with 193 additions and 25 deletions

View File

@ -45,7 +45,7 @@ bool YACReaderLocalClient::requestComicInfo(quint64 libraryId, ComicDB & comic,
out << (quint32)(block.size() - sizeof(quint32));
int written, previousWritten = 0;
int tries = 0;
quint16 tries = 0;
while(written != block.size() && tries < 200)
{
written += localSocket->write(block);
@ -63,27 +63,36 @@ bool YACReaderLocalClient::requestComicInfo(quint64 libraryId, ComicDB & comic,
//QByteArray data;
tries = 0;
while(localSocket->bytesAvailable() < sizeof(quint32) && tries < 10)
int dataAvailable = 0;
QByteArray packageSize;
localSocket->waitForReadyRead(1000);
while(packageSize.size() < sizeof(quint32) && tries < 20)
{
packageSize.append(localSocket->read(sizeof(quint32) - packageSize.size()));
localSocket->waitForReadyRead(100);
tries++;
if(dataAvailable == packageSize.size())
{
tries++; //TODO apply 'tries' fix
}
dataAvailable = packageSize.size();
}
if(tries == 10)
if(tries == 20)
{
localSocket->close();
QLOG_ERROR() << "Requesting Comic Info : unable to read package size";
return false;
}
QDataStream sizeStream(localSocket->read(sizeof(quint32)));
QDataStream sizeStream(packageSize);//localSocket->read(sizeof(quint32)));
sizeStream.setVersion(QDataStream::Qt_4_8);
quint32 totalSize = 0;
sizeStream >> totalSize;
QByteArray data;
tries = 0;
int dataRead = 0;
while(data.length() < totalSize && tries < 20 )
localSocket->waitForReadyRead(1000);
while(data.length() < totalSize && tries < 20 )
{
data.append(localSocket->readAll());
if(data.length() < totalSize)
@ -92,10 +101,11 @@ bool YACReaderLocalClient::requestComicInfo(quint64 libraryId, ComicDB & comic,
tries++;
dataRead = data.length();
}
if(tries == 20)
if(tries == 20)
{
localSocket->close();
QLOG_ERROR() << QString("Requesting Comic Info : unable to read data (%1,%2)").arg(data.length()).arg(totalSize);
QLOG_ERROR() << "Requesting Comic Info : unable to read data (" << data.length() << "," << totalSize << ")";
return false;
}
@ -127,7 +137,8 @@ bool YACReaderLocalClient::sendComicInfo(quint64 libraryId, ComicDB & comic)
out.device()->seek(0);
out << (quint32)(block.size() - sizeof(quint32));
int written, previousWritten = 0;
int written, previousWritten;
written = previousWritten = 0;
int tries = 0;
while(written != block.size() && tries < 100)
{