MCPcopy Create free account
hub / github.com/YACReader/yacreader / requestComicInfo

Method requestComicInfo

YACReader/yacreader_local_client.cpp:31–116  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

29#include <QMessageBox>
30
31bool YACReaderLocalClient::requestComicInfo(quint64 libraryId, ComicDB &comic, QList<ComicDB> &siblings, OpenComicSource source)
32{
33 localSocket->connectToServer(YACREADERLIBRARY_GUID);
34 if (localSocket->isOpen()) {
35 QByteArray block;
36 QDataStream out(&block, QIODevice::WriteOnly);
37 out.setVersion(QDataStream::Qt_4_8);
38 out << (quint32)0;
39 out << (quint8)YACReader::RequestComicInfo;
40 out << libraryId;
41 out << source;
42 out << comic;
43 out.device()->seek(0);
44 out << (quint32)(block.size() - sizeof(quint32));
45
46 int written = 0;
47 int previousWritten = 0;
48 quint16 tries = 0;
49 while (written != block.size() && tries < 200) {
50 written += localSocket->write(block);
51 localSocket->flush();
52 if (written == previousWritten) // no bytes were written
53 tries++;
54 previousWritten = written;
55 }
56 if (tries == 200) {
57 localSocket->close();
58 QLOG_ERROR() << "Requesting Comic Info : unable to send request";
59 return false;
60 }
61
62 localSocket->waitForBytesWritten(2000);
63
64 // QByteArray data;
65 tries = 0;
66 int dataAvailable = 0;
67 QByteArray packageSize;
68 localSocket->waitForReadyRead(1000);
69 while (packageSize.size() < (int)sizeof(quint32) && tries < 20) {
70 packageSize.append(localSocket->read(sizeof(quint32) - packageSize.size()));
71 localSocket->waitForReadyRead(100);
72 if (dataAvailable == packageSize.size()) {
73 tries++; // TODO apply 'tries' fix
74 }
75 dataAvailable = packageSize.size();
76 }
77 if (tries == 20) {
78 localSocket->close();
79 QLOG_ERROR() << "Requesting Comic Info : unable to read package size";
80 return false;
81 }
82 QDataStream sizeStream(packageSize); // localSocket->read(sizeof(quint32)));
83 sizeStream.setVersion(QDataStream::Qt_4_8);
84 quint32 totalSize = 0;
85 sizeStream >> totalSize;
86
87 QByteArray data;
88

Callers 1

openMethod · 0.80

Calls 2

writeMethod · 0.80
closeMethod · 0.45

Tested by

no test coverage detected