mirror of
				https://github.com/YACReader/yacreader
				synced 2025-11-03 16:54:39 -05:00 
			
		
		
		
	Qt 4.8.5
fixed comiccontroller, now ComicFiles are loaded in a background thread (7z.dll) fixed local comunications, no more read/write locks
This commit is contained in:
		@ -37,24 +37,38 @@ bool YACReaderLocalClient::requestComicInfo(quint64 libraryId, ComicDB & comic,
 | 
			
		||||
		out << (quint16)(block.size() - sizeof(quint16));
 | 
			
		||||
 | 
			
		||||
		int  written = 0;
 | 
			
		||||
		while(written != block.size())
 | 
			
		||||
		int tries = 0;
 | 
			
		||||
		while(written != block.size() && tries < 200)
 | 
			
		||||
		{
 | 
			
		||||
			written += localSocket->write(block);
 | 
			
		||||
			localSocket->flush();
 | 
			
		||||
			tries++;
 | 
			
		||||
		}
 | 
			
		||||
		if(tries == 200)
 | 
			
		||||
			return false;
 | 
			
		||||
		
 | 
			
		||||
		//QByteArray data;
 | 
			
		||||
		while(localSocket->bytesAvailable() < sizeof(quint16))
 | 
			
		||||
			localSocket->waitForReadyRead();
 | 
			
		||||
		tries = 0;
 | 
			
		||||
		while(localSocket->bytesAvailable() < sizeof(quint16) && tries < 200)
 | 
			
		||||
		{
 | 
			
		||||
			localSocket->waitForReadyRead(10);
 | 
			
		||||
			tries++;
 | 
			
		||||
		}
 | 
			
		||||
		if(tries == 200)
 | 
			
		||||
			return false;
 | 
			
		||||
		QDataStream sizeStream(localSocket->read(sizeof(quint16)));
 | 
			
		||||
		sizeStream.setVersion(QDataStream::Qt_4_8);
 | 
			
		||||
		quint16 totalSize = 0;
 | 
			
		||||
		sizeStream >> totalSize;
 | 
			
		||||
		
 | 
			
		||||
		while(localSocket->bytesAvailable() < totalSize )
 | 
			
		||||
		tries = 0;
 | 
			
		||||
		while(localSocket->bytesAvailable() < totalSize && tries < 200 )
 | 
			
		||||
		{
 | 
			
		||||
			localSocket->waitForReadyRead();
 | 
			
		||||
			localSocket->waitForReadyRead(10);
 | 
			
		||||
			tries++;
 | 
			
		||||
		}
 | 
			
		||||
		if(tries == 200)
 | 
			
		||||
			return false;
 | 
			
		||||
		QDataStream dataStream(localSocket->read(totalSize));
 | 
			
		||||
		dataStream >> comic;
 | 
			
		||||
		dataStream >> siblings;
 | 
			
		||||
@ -80,10 +94,14 @@ bool YACReaderLocalClient::sendComicInfo(quint64 libraryId, ComicDB & comic)
 | 
			
		||||
		out << (quint16)(block.size() - sizeof(quint16));
 | 
			
		||||
 | 
			
		||||
		int  written = 0;
 | 
			
		||||
		while(written != block.size())
 | 
			
		||||
		int tries = 0;
 | 
			
		||||
		while(written != block.size() && tries < 100)
 | 
			
		||||
		{
 | 
			
		||||
			written += localSocket->write(block);
 | 
			
		||||
			tries++;
 | 
			
		||||
		}
 | 
			
		||||
		if(tries == 100 && written != block.size())
 | 
			
		||||
			return false;
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
	else 
 | 
			
		||||
 | 
			
		||||
@ -50,16 +50,13 @@ void ComicController::service(HttpRequest& request, HttpResponse& response)
 | 
			
		||||
	if(comicFile != NULL)
 | 
			
		||||
	{
 | 
			
		||||
		QThread * thread = NULL;
 | 
			
		||||
		if (typeid(*comicFile) != typeid(FileComic))
 | 
			
		||||
		{
 | 
			
		||||
			thread = new QThread();
 | 
			
		||||
 | 
			
		||||
			comicFile->moveToThread(thread);
 | 
			
		||||
		thread = new QThread();
 | 
			
		||||
 | 
			
		||||
			connect(thread, SIGNAL(started()), comicFile, SLOT(process()));
 | 
			
		||||
			connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
 | 
			
		||||
		comicFile->moveToThread(thread);
 | 
			
		||||
 | 
			
		||||
		}
 | 
			
		||||
		connect(thread, SIGNAL(started()), comicFile, SLOT(process()));
 | 
			
		||||
		connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
 | 
			
		||||
 | 
			
		||||
		comicFile->load(libraries.value(libraryName)+comic.path);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -32,19 +32,29 @@ void YACReaderLocalServer::sendResponse()
 | 
			
		||||
 | 
			
		||||
	 quint64 libraryId;
 | 
			
		||||
	 ComicDB comic;
 | 
			
		||||
	 int tries = 0;
 | 
			
		||||
 | 
			
		||||
	 //QByteArray data;
 | 
			
		||||
	 while(clientConnection->bytesAvailable() < sizeof(quint16))
 | 
			
		||||
		 clientConnection->waitForReadyRead();
 | 
			
		||||
	 while(clientConnection->bytesAvailable() < sizeof(quint16) && tries < 200)
 | 
			
		||||
	 {
 | 
			
		||||
		 clientConnection->waitForReadyRead(10);
 | 
			
		||||
		 tries++;
 | 
			
		||||
	 }
 | 
			
		||||
	 if(tries == 200)
 | 
			
		||||
		 return;
 | 
			
		||||
	 QDataStream sizeStream(clientConnection->read(sizeof(quint16)));
 | 
			
		||||
	 sizeStream.setVersion(QDataStream::Qt_4_8);
 | 
			
		||||
	 quint16 totalSize = 0;
 | 
			
		||||
	 sizeStream >> totalSize;
 | 
			
		||||
 | 
			
		||||
	 while(clientConnection->bytesAvailable() < totalSize )
 | 
			
		||||
	 tries = 0;
 | 
			
		||||
	 while(clientConnection->bytesAvailable() < totalSize && tries < 200)
 | 
			
		||||
	 {
 | 
			
		||||
		 clientConnection->waitForReadyRead();
 | 
			
		||||
		 clientConnection->waitForReadyRead(10);
 | 
			
		||||
		 tries++;
 | 
			
		||||
	 }
 | 
			
		||||
	 if(tries == 200)
 | 
			
		||||
		 return;
 | 
			
		||||
	 QDataStream dataStream(clientConnection->read(totalSize));
 | 
			
		||||
	 quint8 msgType;
 | 
			
		||||
	 dataStream >> msgType;
 | 
			
		||||
@ -68,10 +78,17 @@ void YACReaderLocalServer::sendResponse()
 | 
			
		||||
			 out << (quint16)(block.size() - sizeof(quint16));
 | 
			
		||||
 | 
			
		||||
			 int  written = 0;
 | 
			
		||||
			 while(written != block.size())
 | 
			
		||||
			 tries = 0;
 | 
			
		||||
			 while(written != block.size() && tries < 200)
 | 
			
		||||
			 {
 | 
			
		||||
				 written += clientConnection->write(block);
 | 
			
		||||
				 clientConnection->flush();
 | 
			
		||||
				 int ret = clientConnection->write(block);
 | 
			
		||||
				 if(ret != -1)
 | 
			
		||||
				 {
 | 
			
		||||
					written += ret;
 | 
			
		||||
					clientConnection->flush();
 | 
			
		||||
				 }
 | 
			
		||||
				 else
 | 
			
		||||
					 tries++;
 | 
			
		||||
			 }
 | 
			
		||||
			 break;
 | 
			
		||||
		 }
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,10 @@
 | 
			
		||||
 | 
			
		||||
echo Setting up a Qt environment...
 | 
			
		||||
 | 
			
		||||
set QTDIR=D:\Desarrollo\Qt\4.8.4
 | 
			
		||||
echo -- QTDIR set to D:\Desarrollo\Qt\4.8.4
 | 
			
		||||
set PATH=D:\Desarrollo\Qt\4.8.4\bin;%PATH%
 | 
			
		||||
echo -- Added D:\Desarrollo\Qt\4.8.4\bin to PATH
 | 
			
		||||
set QTDIR=D:\Desarrollo\Qt\4.8.5
 | 
			
		||||
echo -- QTDIR set to D:\Desarrollo\Qt\4.8.5
 | 
			
		||||
set PATH=D:\Desarrollo\Qt\4.8.5\bin;%PATH%
 | 
			
		||||
echo -- Added D:\Desarrollo\Qt\4.8.5\bin to PATH
 | 
			
		||||
set QMAKESPEC=win32-msvc2010
 | 
			
		||||
echo -- QMAKESPEC set to "win32-msvc2010"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user