mirror of
https://github.com/YACReader/yacreader
synced 2025-06-04 01:28:55 -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)),
|
/*connect(socket, SIGNAL(error(QLocalSocket::LocalSocketError)),
|
||||||
this, SLOT(displayError(QLocalSocket::LocalSocketError)));*/
|
this, SLOT(displayError(QLocalSocket::LocalSocketError)));*/
|
||||||
}
|
}
|
||||||
|
YACReaderLocalClient::~YACReaderLocalClient()
|
||||||
|
{
|
||||||
|
delete localSocket;
|
||||||
|
}
|
||||||
//información de comic recibida...
|
//información de comic recibida...
|
||||||
void YACReaderLocalClient::readMessage()
|
void YACReaderLocalClient::readMessage()
|
||||||
{
|
{
|
||||||
@ -47,7 +50,10 @@ bool YACReaderLocalClient::requestComicInfo(quint64 libraryId, ComicDB & comic,
|
|||||||
tries++;
|
tries++;
|
||||||
}
|
}
|
||||||
if(tries == 200)
|
if(tries == 200)
|
||||||
|
{
|
||||||
|
localSocket->close();
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
//QByteArray data;
|
//QByteArray data;
|
||||||
tries = 0;
|
tries = 0;
|
||||||
@ -57,7 +63,10 @@ bool YACReaderLocalClient::requestComicInfo(quint64 libraryId, ComicDB & comic,
|
|||||||
tries++;
|
tries++;
|
||||||
}
|
}
|
||||||
if(tries == 10)
|
if(tries == 10)
|
||||||
|
{
|
||||||
|
localSocket->close();
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
QDataStream sizeStream(localSocket->read(sizeof(quint16)));
|
QDataStream sizeStream(localSocket->read(sizeof(quint16)));
|
||||||
sizeStream.setVersion(QDataStream::Qt_4_8);
|
sizeStream.setVersion(QDataStream::Qt_4_8);
|
||||||
quint16 totalSize = 0;
|
quint16 totalSize = 0;
|
||||||
@ -70,10 +79,14 @@ bool YACReaderLocalClient::requestComicInfo(quint64 libraryId, ComicDB & comic,
|
|||||||
tries++;
|
tries++;
|
||||||
}
|
}
|
||||||
if(tries == 10)
|
if(tries == 10)
|
||||||
|
{
|
||||||
|
localSocket->close();
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
QDataStream dataStream(localSocket->read(totalSize));
|
QDataStream dataStream(localSocket->read(totalSize));
|
||||||
dataStream >> comic;
|
dataStream >> comic;
|
||||||
dataStream >> siblings;
|
dataStream >> siblings;
|
||||||
|
localSocket->close();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -102,6 +115,7 @@ bool YACReaderLocalClient::sendComicInfo(quint64 libraryId, ComicDB & comic)
|
|||||||
written += localSocket->write(block);
|
written += localSocket->write(block);
|
||||||
tries++;
|
tries++;
|
||||||
}
|
}
|
||||||
|
localSocket->close();
|
||||||
if(tries == 100 && written != block.size())
|
if(tries == 100 && written != block.size())
|
||||||
{
|
{
|
||||||
emit finished();
|
emit finished();
|
||||||
|
@ -11,7 +11,7 @@ class YACReaderLocalClient : public QObject
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit YACReaderLocalClient(QObject *parent = 0);
|
explicit YACReaderLocalClient(QObject *parent = 0);
|
||||||
|
~YACReaderLocalClient();
|
||||||
signals:
|
signals:
|
||||||
void finished();
|
void finished();
|
||||||
public slots:
|
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 &)));
|
mw->connect(localServer,SIGNAL(comicUpdated(quint64, const ComicDB &)),mw,SLOT(updateComicsView(quint64, const ComicDB &)));
|
||||||
|
|
||||||
localServer->start();
|
|
||||||
//connections to localServer
|
//connections to localServer
|
||||||
|
|
||||||
mw->show();
|
mw->show();
|
||||||
|
@ -12,9 +12,9 @@
|
|||||||
using namespace YACReader;
|
using namespace YACReader;
|
||||||
|
|
||||||
QMutex YACReaderClientConnectionWorker::dbMutex;
|
QMutex YACReaderClientConnectionWorker::dbMutex;
|
||||||
|
//int YACReaderClientConnectionWorker::count = 0;
|
||||||
YACReaderLocalServer::YACReaderLocalServer(QObject *parent) :
|
YACReaderLocalServer::YACReaderLocalServer(QObject *parent) :
|
||||||
QThread(parent)
|
QObject(parent)
|
||||||
{
|
{
|
||||||
localServer = new QLocalServer(this);
|
localServer = new QLocalServer(this);
|
||||||
if (!localServer->listen(YACREADERLIBRARY_GUID)) {
|
if (!localServer->listen(YACREADERLIBRARY_GUID)) {
|
||||||
@ -29,11 +29,11 @@ bool YACReaderLocalServer::isListening()
|
|||||||
return localServer->isListening();
|
return localServer->isListening();
|
||||||
}
|
}
|
||||||
|
|
||||||
void YACReaderLocalServer::run()
|
/*void YACReaderLocalServer::run()
|
||||||
{
|
{
|
||||||
while(1)
|
while(1)
|
||||||
exec();
|
exec();
|
||||||
}
|
}*/
|
||||||
|
|
||||||
void YACReaderLocalServer::sendResponse()
|
void YACReaderLocalServer::sendResponse()
|
||||||
{
|
{
|
||||||
@ -41,9 +41,13 @@ void YACReaderLocalServer::sendResponse()
|
|||||||
//connect(clientConnection, SIGNAL(disconnected()),clientConnection, SLOT(deleteLater()));
|
//connect(clientConnection, SIGNAL(disconnected()),clientConnection, SLOT(deleteLater()));
|
||||||
|
|
||||||
YACReaderClientConnectionWorker * worker = new YACReaderClientConnectionWorker(clientConnection);
|
YACReaderClientConnectionWorker * worker = new YACReaderClientConnectionWorker(clientConnection);
|
||||||
|
if(worker != 0)
|
||||||
|
{
|
||||||
|
clientConnection->moveToThread(worker);
|
||||||
connect(worker,SIGNAL(comicUpdated(quint64, ComicDB)),this,SIGNAL(comicUpdated(quint64, ComicDB)));
|
connect(worker,SIGNAL(comicUpdated(quint64, ComicDB)),this,SIGNAL(comicUpdated(quint64, ComicDB)));
|
||||||
connect(worker,SIGNAL(finished()),worker,SLOT(deleteLater()));
|
connect(worker,SIGNAL(finished()),worker,SLOT(deleteLater()));
|
||||||
worker->start();
|
worker->start();
|
||||||
|
}
|
||||||
//clientConnection->waitForBytesWritten();*/
|
//clientConnection->waitForBytesWritten();*/
|
||||||
//clientConnection->disconnectFromServer();
|
//clientConnection->disconnectFromServer();
|
||||||
}
|
}
|
||||||
@ -68,9 +72,20 @@ YACReaderClientConnectionWorker::~YACReaderClientConnectionWorker()
|
|||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
/*#include <QFile>
|
||||||
|
#include <QTextStream>
|
||||||
|
#include <QDateTime>*/
|
||||||
void YACReaderClientConnectionWorker::run()
|
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;
|
quint64 libraryId;
|
||||||
ComicDB comic;
|
ComicDB comic;
|
||||||
int tries = 0;
|
int tries = 0;
|
||||||
@ -143,6 +158,15 @@ void YACReaderClientConnectionWorker::run()
|
|||||||
|
|
||||||
clientConnection->waitForDisconnected();
|
clientConnection->waitForDisconnected();
|
||||||
clientConnection->deleteLater();
|
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)
|
void YACReaderClientConnectionWorker::getComicInfo(quint64 libraryId, ComicDB & comic, QList<ComicDB> & siblings)
|
||||||
|
@ -9,7 +9,7 @@ class QLocalServer;
|
|||||||
class QLocalSocket;
|
class QLocalSocket;
|
||||||
class ComicDB;
|
class ComicDB;
|
||||||
|
|
||||||
class YACReaderLocalServer : public QThread
|
class YACReaderLocalServer : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
@ -22,7 +22,7 @@ public slots:
|
|||||||
void sendResponse();
|
void sendResponse();
|
||||||
static bool isRunning();
|
static bool isRunning();
|
||||||
private:
|
private:
|
||||||
void run();
|
//void run();
|
||||||
QLocalServer * localServer;
|
QLocalServer * localServer;
|
||||||
|
|
||||||
};
|
};
|
||||||
@ -37,6 +37,7 @@ signals:
|
|||||||
void comicUpdated(quint64 libraryId, const ComicDB & comic);
|
void comicUpdated(quint64 libraryId, const ComicDB & comic);
|
||||||
private:
|
private:
|
||||||
static QMutex dbMutex;
|
static QMutex dbMutex;
|
||||||
|
//static int count;
|
||||||
void run();
|
void run();
|
||||||
|
|
||||||
void getComicInfo(quint64 libraryId, ComicDB & comic, QList<ComicDB> & sibling);
|
void getComicInfo(quint64 libraryId, ComicDB & comic, QList<ComicDB> & sibling);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user