mirror of
https://github.com/YACReader/yacreader
synced 2025-06-03 00:58:32 -04:00
fixed local client/server communication (close client socket)
This commit is contained in:
parent
f67a7c25ac
commit
404c551d29
@ -16,7 +16,10 @@ YACReaderLocalClient::YACReaderLocalClient(QObject *parent) :
|
||||
/*connect(socket, SIGNAL(error(QLocalSocket::LocalSocketError)),
|
||||
this, SLOT(displayError(QLocalSocket::LocalSocketError)));*/
|
||||
}
|
||||
|
||||
YACReaderLocalClient::~YACReaderLocalClient()
|
||||
{
|
||||
delete localSocket;
|
||||
}
|
||||
//información de comic recibida...
|
||||
void YACReaderLocalClient::readMessage()
|
||||
{
|
||||
@ -47,7 +50,10 @@ bool YACReaderLocalClient::requestComicInfo(quint64 libraryId, ComicDB & comic,
|
||||
tries++;
|
||||
}
|
||||
if(tries == 200)
|
||||
{
|
||||
localSocket->close();
|
||||
return false;
|
||||
}
|
||||
|
||||
//QByteArray data;
|
||||
tries = 0;
|
||||
@ -57,7 +63,10 @@ bool YACReaderLocalClient::requestComicInfo(quint64 libraryId, ComicDB & comic,
|
||||
tries++;
|
||||
}
|
||||
if(tries == 10)
|
||||
{
|
||||
localSocket->close();
|
||||
return false;
|
||||
}
|
||||
QDataStream sizeStream(localSocket->read(sizeof(quint16)));
|
||||
sizeStream.setVersion(QDataStream::Qt_4_8);
|
||||
quint16 totalSize = 0;
|
||||
@ -70,10 +79,14 @@ bool YACReaderLocalClient::requestComicInfo(quint64 libraryId, ComicDB & comic,
|
||||
tries++;
|
||||
}
|
||||
if(tries == 10)
|
||||
{
|
||||
localSocket->close();
|
||||
return false;
|
||||
}
|
||||
QDataStream dataStream(localSocket->read(totalSize));
|
||||
dataStream >> comic;
|
||||
dataStream >> siblings;
|
||||
localSocket->close();
|
||||
return true;
|
||||
}
|
||||
else
|
||||
@ -102,6 +115,7 @@ bool YACReaderLocalClient::sendComicInfo(quint64 libraryId, ComicDB & comic)
|
||||
written += localSocket->write(block);
|
||||
tries++;
|
||||
}
|
||||
localSocket->close();
|
||||
if(tries == 100 && written != block.size())
|
||||
{
|
||||
emit finished();
|
||||
|
@ -11,7 +11,7 @@ class YACReaderLocalClient : public QObject
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit YACReaderLocalClient(QObject *parent = 0);
|
||||
|
||||
~YACReaderLocalClient();
|
||||
signals:
|
||||
void finished();
|
||||
public slots:
|
||||
|
@ -53,7 +53,6 @@ int main( int argc, char ** argv )
|
||||
|
||||
mw->connect(localServer,SIGNAL(comicUpdated(quint64, const ComicDB &)),mw,SLOT(updateComicsView(quint64, const ComicDB &)));
|
||||
|
||||
localServer->start();
|
||||
//connections to localServer
|
||||
|
||||
mw->show();
|
||||
|
@ -12,9 +12,9 @@
|
||||
using namespace YACReader;
|
||||
|
||||
QMutex YACReaderClientConnectionWorker::dbMutex;
|
||||
|
||||
//int YACReaderClientConnectionWorker::count = 0;
|
||||
YACReaderLocalServer::YACReaderLocalServer(QObject *parent) :
|
||||
QThread(parent)
|
||||
QObject(parent)
|
||||
{
|
||||
localServer = new QLocalServer(this);
|
||||
if (!localServer->listen(YACREADERLIBRARY_GUID)) {
|
||||
@ -29,11 +29,11 @@ bool YACReaderLocalServer::isListening()
|
||||
return localServer->isListening();
|
||||
}
|
||||
|
||||
void YACReaderLocalServer::run()
|
||||
/*void YACReaderLocalServer::run()
|
||||
{
|
||||
while(1)
|
||||
exec();
|
||||
}
|
||||
}*/
|
||||
|
||||
void YACReaderLocalServer::sendResponse()
|
||||
{
|
||||
@ -41,9 +41,13 @@ void YACReaderLocalServer::sendResponse()
|
||||
//connect(clientConnection, SIGNAL(disconnected()),clientConnection, SLOT(deleteLater()));
|
||||
|
||||
YACReaderClientConnectionWorker * worker = new YACReaderClientConnectionWorker(clientConnection);
|
||||
connect(worker,SIGNAL(comicUpdated(quint64, ComicDB)),this,SIGNAL(comicUpdated(quint64, ComicDB)));
|
||||
connect(worker,SIGNAL(finished()),worker,SLOT(deleteLater()));
|
||||
worker->start();
|
||||
if(worker != 0)
|
||||
{
|
||||
clientConnection->moveToThread(worker);
|
||||
connect(worker,SIGNAL(comicUpdated(quint64, ComicDB)),this,SIGNAL(comicUpdated(quint64, ComicDB)));
|
||||
connect(worker,SIGNAL(finished()),worker,SLOT(deleteLater()));
|
||||
worker->start();
|
||||
}
|
||||
//clientConnection->waitForBytesWritten();*/
|
||||
//clientConnection->disconnectFromServer();
|
||||
}
|
||||
@ -68,9 +72,20 @@ YACReaderClientConnectionWorker::~YACReaderClientConnectionWorker()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/*#include <QFile>
|
||||
#include <QTextStream>
|
||||
#include <QDateTime>*/
|
||||
void YACReaderClientConnectionWorker::run()
|
||||
{
|
||||
/*{
|
||||
QFile f(QString("c:/temp/thread%1.txt").arg(count));
|
||||
f.open(QIODevice::Append);
|
||||
QTextStream out(&f);
|
||||
out << QString("Thread%1 starts").arg(count) << endl;
|
||||
f.close();
|
||||
}
|
||||
uint t1 = QDateTime::currentMSecsSinceEpoch();*/
|
||||
|
||||
quint64 libraryId;
|
||||
ComicDB comic;
|
||||
int tries = 0;
|
||||
@ -143,6 +158,15 @@ void YACReaderClientConnectionWorker::run()
|
||||
|
||||
clientConnection->waitForDisconnected();
|
||||
clientConnection->deleteLater();
|
||||
/*count++;
|
||||
uint t2 = QDateTime::currentMSecsSinceEpoch();
|
||||
{
|
||||
QFile f(QString("c:/temp/thread%1.txt").arg(count));
|
||||
f.open(QIODevice::Append);
|
||||
QTextStream out(&f);
|
||||
out << QString("Thread%1 ends : time - %2").arg(count).arg(t2-t1) << endl;
|
||||
f.close();
|
||||
}*/
|
||||
}
|
||||
|
||||
void YACReaderClientConnectionWorker::getComicInfo(quint64 libraryId, ComicDB & comic, QList<ComicDB> & siblings)
|
||||
|
@ -9,7 +9,7 @@ class QLocalServer;
|
||||
class QLocalSocket;
|
||||
class ComicDB;
|
||||
|
||||
class YACReaderLocalServer : public QThread
|
||||
class YACReaderLocalServer : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
@ -22,7 +22,7 @@ public slots:
|
||||
void sendResponse();
|
||||
static bool isRunning();
|
||||
private:
|
||||
void run();
|
||||
//void run();
|
||||
QLocalServer * localServer;
|
||||
|
||||
};
|
||||
@ -37,6 +37,7 @@ signals:
|
||||
void comicUpdated(quint64 libraryId, const ComicDB & comic);
|
||||
private:
|
||||
static QMutex dbMutex;
|
||||
//static int count;
|
||||
void run();
|
||||
|
||||
void getComicInfo(quint64 libraryId, ComicDB & comic, QList<ComicDB> & sibling);
|
||||
|
Loading…
x
Reference in New Issue
Block a user