diff options
Diffstat (limited to 'LocalListener.cpp')
-rw-r--r-- | LocalListener.cpp | 147 |
1 files changed, 97 insertions, 50 deletions
diff --git a/LocalListener.cpp b/LocalListener.cpp index 21dc09b..4a418aa 100644 --- a/LocalListener.cpp +++ b/LocalListener.cpp @@ -24,21 +24,32 @@ LocalListener::~LocalListener() if(localServer.isListening()) { localServer.close(); - if(!QLocalServer::removeServer(ExtraSocket::pathSocket(ULTRACOPIER_SOCKETNAME))) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QString("Unable to remove the listening server")); + if(!QLocalServer::removeServer(QString::fromStdString(ExtraSocket::pathSocket(ULTRACOPIER_SOCKETNAME)))) + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable to remove the listening server"); } } bool LocalListener::tryConnect() { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("start")); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); QStringList ultracopierArguments=QCoreApplication::arguments(); //remove excutable path because is useless (unsafe to use) ultracopierArguments.removeFirst(); //add the current path to file full path resolution if needed ultracopierArguments.insert(0,QDir::currentPath()); + + std::vector<std::string> ultracopierArgumentsStd; + { + int index=0; + while(index<ultracopierArguments.size()) + { + ultracopierArgumentsStd.push_back(ultracopierArguments.at(index).toStdString()); + index++; + } + } + QLocalSocket localSocket; - localSocket.connectToServer(ExtraSocket::pathSocket(ULTRACOPIER_SOCKETNAME),QIODevice::WriteOnly); + localSocket.connectToServer(QString::fromStdString(ExtraSocket::pathSocket(ULTRACOPIER_SOCKETNAME)),QIODevice::WriteOnly); if(localSocket.waitForConnected(1000)) { if(!localSocket.isValid()) @@ -46,11 +57,11 @@ bool LocalListener::tryConnect() ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"localSocket is not valid!"); return false; } - emit cli(ultracopierArguments,false,true); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"connection succes, number arguments given: "+QString::number(ultracopierArguments.size())); + emit cli(ultracopierArgumentsStd,false,true); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"connection succes, number arguments given: "+std::to_string(ultracopierArgumentsStd.size())); #ifdef ULTRACOPIER_DEBUG for (int i = 0; i < ultracopierArguments.size(); ++i) { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"argument["+QString::number(i)+"]: "+ultracopierArguments.at(i)); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"argument["+std::to_string(i)+"]: "+ultracopierArgumentsStd.at(i)); } #endif // ULTRACOPIER_DEBUG //cut string list and send it as block of 32KB @@ -66,17 +77,20 @@ bool LocalListener::tryConnect() do { QByteArray blockToSend; - int byteWriten; blockToSend=block.left(32*1024);//32KB block.remove(0,blockToSend.size()); - byteWriten = localSocket.write(blockToSend); + #ifdef ULTRACOPIER_DEBUG + int byteWriten = + #endif + localSocket.write(blockToSend); #ifdef ULTRACOPIER_DEBUG if(!localSocket.isValid()) ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"localSocket is not valid!"); if(localSocket.errorString()!="Unknown error" && localSocket.errorString()!="") - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"localSocket->errorString(): "+localSocket.errorString()); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"localSocket->errorString(): "+localSocket.errorString().toStdString()); if(blockToSend.size()!=byteWriten) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"blockToSend("+QString::number(blockToSend.size())+")!=byteWriten("+QString::number(byteWriten)+")"); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"blockToSend("+std::to_string(blockToSend.size())+ + ")!=byteWriten("+std::to_string(byteWriten)+")"); #endif // ULTRACOPIER_DEBUG if(localSocket.waitForBytesWritten(200)) { @@ -87,8 +101,9 @@ bool LocalListener::tryConnect() QMessageBox::critical(NULL,"Alert","No arguments send because timeout detected!"); ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"Block not send correctly"); } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"blockToSend: "+QString(blockToSend.toHex())); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"byteWriten: "+QString::number(byteWriten)+", size sending: "+QString::number(blockToSend.size())); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"blockToSend: "+blockToSend.toHex().toStdString()); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"byteWriten: "+std::to_string(byteWriten)+ + ", size sending: "+std::to_string(blockToSend.size())); } while(block.size()); ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"disconnect the socket"); @@ -97,8 +112,8 @@ bool LocalListener::tryConnect() } else { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("connection failed, continu...")); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("ultracopierArguments: ")+ultracopierArguments.join(";")); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"connection failed, continue..."); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"ultracopierArguments: "+ultracopierArguments.join(";").toStdString()); return false; } } @@ -106,17 +121,18 @@ bool LocalListener::tryConnect() /// the listen server void LocalListener::listenServer() { - if(!QLocalServer::removeServer(ExtraSocket::pathSocket(ULTRACOPIER_SOCKETNAME))) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("Unable to remove the listening server")); + if(!QLocalServer::removeServer(QString::fromStdString(ExtraSocket::pathSocket(ULTRACOPIER_SOCKETNAME)))) + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable to remove the listening server"); #ifndef Q_OS_MAC localServer.setSocketOptions(QLocalServer::UserAccessOption); #endif - if(!localServer.listen(ExtraSocket::pathSocket(ULTRACOPIER_SOCKETNAME))) + if(!localServer.listen(QString::fromStdString(ExtraSocket::pathSocket(ULTRACOPIER_SOCKETNAME)))) { #ifndef Q_OS_MAC //QMessageBox::critical(NULL,"Alert",QStringLiteral("Ultracopier have not able to lock unique instance: %1").arg(localServer.errorString())); #endif - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QString("Ultracopier have not able to lock unique instance: %1, error code: %2").arg(localServer.errorString()).arg((qint32)localServer.serverError())); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Ultracopier have not able to lock unique instance: "+localServer.errorString().toStdString()+ + ", error code: "+std::to_string((int32_t)localServer.serverError())); } else connect(&localServer, &QLocalServer::newConnection, this, &LocalListener::newConnexion); @@ -125,19 +141,19 @@ void LocalListener::listenServer() //the time is done void LocalListener::timeoutDectected() { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("start")); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"start"); if(clientList.size()>0) { - int index=0; + unsigned int index=0; bool haveData=false; while(index<clientList.size()) { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"clientList.first().size: "+QString::number(clientList.first().size)); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"clientList.first().size: "+std::to_string(clientList.front().size)); if(!clientList.at(index).data.isEmpty() || clientList.at(index).haveData) { haveData=true; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("Timeout while recomposing data from connected clients: %1").arg(QString(clientList.at(index).data.toHex()))); - clientList.removeFirst(); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"Timeout while recomposing data from connected clients: "+clientList.at(index).data.toHex().toStdString()); + clientList.erase(clientList.cbegin()); } else index++; @@ -150,23 +166,23 @@ void LocalListener::timeoutDectected() /// \brief Data is incomming void LocalListener::dataIncomming() { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,QStringLiteral("start")); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"start"); // 1 : we get packets from client //Which client send the message (Search of the QLocalSocket of client) QLocalSocket *socket = qobject_cast<QLocalSocket *>(sender()); if (socket == 0) // If not found { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("bad socket")); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"bad socket"); return; } int index=-1; - for (int i=0;i<clientList.size(); ++i) { + for (unsigned int i=0;i<clientList.size(); ++i) { if(clientList.at(i).socket==socket) index=i; } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("socket->bytesAvailable() ")+QString::number(socket->bytesAvailable())); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"socket->bytesAvailable() "+std::to_string(socket->bytesAvailable())); if(index!=-1) { if(!clientList.at(index).haveData) @@ -191,36 +207,56 @@ void LocalListener::dataIncomming() clientList[index].haveData=true; clientList[index].data.append(socket->readAll()); TimeOutQLocalSocket.start(); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"Need wait to recomposite: "+QString::number(clientList.at(index).data.size())+", targeted: "+QString::number(clientList.at(index).size)); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"tempComposed.data: "+QString(clientList.at(index).data.toHex())); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"Need wait to recomposite: "+std::to_string(clientList.at(index).data.size())+ + ", targeted: "+std::to_string(clientList.at(index).size)); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"tempComposed.data: "+clientList.at(index).data.toHex().toStdString()); } else if(socket->bytesAvailable() == clientList.at(index).size) //if the size match { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"socket->bytesAvailable(): "+QString::number(socket->bytesAvailable())+", for total of: "+QString::number(socket->bytesAvailable()+sizeof(quint32))); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"socket->bytesAvailable(): "+std::to_string(socket->bytesAvailable())+ + ", for total of: "+std::to_string(socket->bytesAvailable()+sizeof(uint32_t))); QStringList ultracopierArguments; in >> ultracopierArguments; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"ultracopierArguments: "+ultracopierArguments.join(";")); - emit cli(ultracopierArguments,true,false); + std::vector<std::string> ultracopierArgumentsStd; + { + int index=0; + while(index<ultracopierArguments.size()) + { + ultracopierArgumentsStd.push_back(ultracopierArguments.at(index).toStdString()); + index++; + } + } + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"ultracopierArguments: "+ultracopierArguments.join(";").toStdString()); + emit cli(ultracopierArgumentsStd,true,false); clientList[index].data.clear(); clientList[index].haveData=false; TimeOutQLocalSocket.stop(); } else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("socket->bytesAvailable(): ")+QString::number(socket->bytesAvailable())+QStringLiteral(" > clientList.at(index).size!: ")+QString::number(clientList.at(index).size)); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"socket->bytesAvailable(): "+std::to_string(socket->bytesAvailable())+" > clientList.at(index).size!: "+std::to_string(clientList.at(index).size)); } else { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("Query recomposed with this size: ")+QString::number(clientList.at(index).data.size())); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Query recomposed with this size: "+std::to_string(clientList.at(index).data.size())); clientList[index].data.append(socket->readAll()); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("Query recomposed with this size: ")+QString::number(clientList.at(index).data.size())); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"Query recomposed with this size: "+std::to_string(clientList.at(index).data.size())); if(clientList.at(index).data.size()==clientList.at(index).size) { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,QStringLiteral("QByteArray reconstruction finished")); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"QByteArray reconstruction finished"); QDataStream in(clientList.at(index).data); QStringList ultracopierArguments; in >> ultracopierArguments; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("ultracopierArguments: ")+ultracopierArguments.join(";")); - emit cli(ultracopierArguments,true,false); + std::vector<std::string> ultracopierArgumentsStd; + { + int index=0; + while(index<ultracopierArguments.size()) + { + ultracopierArgumentsStd.push_back(ultracopierArguments.at(index).toStdString()); + index++; + } + } + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"ultracopierArguments: "+ultracopierArguments.join(";").toStdString()); + emit cli(ultracopierArgumentsStd,true,false); clientList[index].data.clear(); clientList[index].haveData=false; TimeOutQLocalSocket.stop(); @@ -228,28 +264,28 @@ void LocalListener::dataIncomming() else { TimeOutQLocalSocket.start(); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("Need wait to recomposite: ")+QString::number(clientList.at(index).data.size())+QStringLiteral(", targeted: ")+QString::number(clientList.at(index).size)); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"Need wait to recomposite: "+std::to_string(clientList.at(index).data.size())+", targeted: "+std::to_string(clientList.at(index).size)); return; } } } else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("Socket not found???")); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Socket not found???"); } /// \brief Deconnexion client /// \todo Remove the data in wait linker with this socket void LocalListener::deconnectClient() { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("start")); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); // Wich client leave QLocalSocket *socket = qobject_cast<QLocalSocket *>(sender()); if (socket == 0) // If not found return; - for (int i = 0; i < clientList.size(); ++i) { + for (unsigned int i = 0; i < clientList.size(); ++i) { if(clientList.at(i).socket==socket) - clientList.removeAt(i); + clientList.erase(clientList.cbegin()+i); } socket->deleteLater(); } @@ -257,7 +293,7 @@ void LocalListener::deconnectClient() /// LocalListener New connexion void LocalListener::newConnexion() { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,QStringLiteral("start")); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"start"); ComposedData newClient; newClient.socket = localServer.nextPendingConnection(); #ifdef ULTRACOPIER_DEBUG @@ -269,7 +305,7 @@ void LocalListener::newConnexion() connect(newClient.socket, &QLocalSocket::disconnected, this, &LocalListener::deconnectClient); newClient.size=-1; newClient.haveData=false; - clientList << newClient; + clientList.push_back(newClient); } #ifdef ULTRACOPIER_DEBUG @@ -281,9 +317,9 @@ void LocalListener::error(const QLocalSocket::LocalSocketError &theErrorDefine) { QLocalSocket *client=qobject_cast<QLocalSocket *>(QObject::sender()); if(client!=NULL) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Value:"+QString::number(theErrorDefine)+", Error message: "+client->errorString()); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Value:"+std::to_string(theErrorDefine)+", Error message: "+client->errorString().toStdString()); else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Value:"+QString::number(theErrorDefine)); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Value:"+std::to_string(theErrorDefine)); } } #endif @@ -291,11 +327,22 @@ void LocalListener::error(const QLocalSocket::LocalSocketError &theErrorDefine) /// \can now parse the cli void LocalListener::allPluginIsloaded() { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("start")); + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); QStringList ultracopierArguments=QCoreApplication::arguments(); //remove excutable path because is useless (unsafe to use) ultracopierArguments.removeFirst(); //add the current path to file full path resolution if needed ultracopierArguments.insert(0,QDir::currentPath()); - emit cli(ultracopierArguments,false,false); + + std::vector<std::string> ultracopierArgumentsStd; + { + int index=0; + while(index<ultracopierArguments.size()) + { + ultracopierArgumentsStd.push_back(ultracopierArguments.at(index).toStdString()); + index++; + } + } + + emit cli(ultracopierArgumentsStd,false,false); } |