#include "tcpclient.h" #include "UpdateController.h" #include "externalexecuter.h" #include TCPClient::TCPClient(QObject *parent) : QObject(parent) { socket = new QTcpSocket(this); connect(socket,&QTcpSocket::readyRead,this,&TCPClient::onReadyRead); } void TCPClient::Initialize(UpdateController *updateController, RecognizeSystem *recognize, ExternalExecuter *externalExecuter) { this->updateController = updateController; this->recognizeSystem = recognize; this->externalExecuter = externalExecuter; recognize->SetSocket(socket); emit onSendDebugLog(Tools::GetTime() + " Client started"); } void TCPClient::SetConnect(ServerSettings *serverSettings) { socket->connectToHost(serverSettings->Address,serverSettings->Port.toShort()); emit onSendDebugLog("Try connect..."); socket->waitForReadyRead(); if(socket->state() != QTcpSocket::ConnectedState){ emit onSendDebugLog("Connect invalid"); return; } } void TCPClient::WaitWrites() { socket->waitForBytesWritten(); } QTcpSocket *TCPClient::GetSocket() { return socket; } TCPClient::~TCPClient() { } void TCPClient::onMessageEntered(QString message) { QDataStream stream(socket); QByteArray data; stream.setVersion(QDataStream::Qt_DefaultCompiledVersion); if(!message.isEmpty() && socket->state() == QTcpSocket::ConnectedState){ socket->waitForBytesWritten(); if(message == "check") { stream << PacketType::TYPE_COMMAND; stream << message; socket->waitForBytesWritten(); updateController->SendFile(stream); emit onSendDebugLog(Tools::GetTime() + " Local checkFile sended"); WaitWrites(); socket->readyRead(); } else if(message == "update"){ emit onSendDebugLog("Update started"); stream << PacketType::TYPE_COMMAND; stream << message; socket->waitForBytesWritten(); } else if(message == "run"){ externalExecuter->CallApp(); } }else{ emit onSendDebugLog("WRONG SOCKET AFTER ENTERED"); } } void TCPClient::onReadyRead() { if(!socket){ emit onSendDebugLog("WRONG SOCKET"); return; } //возврат на случай недоступного сокета recognizeSystem->Recognize(); }