#include "service_maintain.h" #include #include service_maintain::service_maintain(iv::service_maintain_param & param) { mparam = param; mnBroadPort = std::atoi(mparam.mstrbroadport.data()); mpServer = new QUdpSocket(this); mpServer->bind(QHostAddress::Any,std::atoi(mparam.mstrlistenport.data())); mpBroad = new QUdpSocket(this); connect(mpServer,SIGNAL(readyRead()),this,SLOT(onRecvData())); // StartService(); } void service_maintain::onRecvData() { while(mpServer->hasPendingDatagrams()) { QByteArray ba; ba.resize(mpServer->bytesAvailable()); QHostAddress host; quint16 port; mpServer->readDatagram(ba.data(),ba.size(),&host,&port); std::cout<<" recevive data from "< 0) { mnServcieStatus = 1; mpfrpProcess = new QProcess(this); connect(mpfrpProcess,SIGNAL(started()),this,SLOT(onProcessStarted())); connect(mpfrpProcess,SIGNAL(finished(int)),this,SLOT(onProcessEnd())); connect(mpfrpProcess,SIGNAL(readyReadStandardOutput()),this,SLOT(onReadStandardOutput())); connect(mpfrpProcess,SIGNAL(readyReadStandardError()),this,SLOT(onReadStandardError())); // connect(mpfrpProcess,SIGNAL(error(QProcess::ProcessError)),this,SLOT(onProcessErrorStarted(QProcess::ProcessError))); char strcmd[1000]; snprintf(strcmd,1000,"%s/frpc -c %s",mparam.mstrfrpcfolder.data(), mstrIniFile.data()); std::cout<<" cmd: "<start(strcmd); } } std::string service_maintain::CreateIniFile() { std::string strfilepath = mparam.mstrfrpcfolder + "/frpc" + QString::number(std::chrono::system_clock::now().time_since_epoch().count() ).toStdString() + ".ini"; mstrIniFile = strfilepath; QFile xFile; xFile.setFileName(strfilepath.data()); if(!xFile.open(QIODevice::ReadWrite)) { mnServiceCode = -1; mnServcieStatus = 0; mstrError = "Can't Create ini file."; std::cout<<"Can't Create ini file."<readAllStandardOutput(); std::cout<<"Std Out:"<readAllStandardError(); std::cout<<"Error Out:"<kill(); mnServcieStatus = 0; mnServiceCode = 0; BroadStatus(); //Broad Status } void service_maintain::BroadStatus() { char strout[1000]; int nsize = 2*sizeof(int); memcpy(strout,&mnServiceCode,sizeof(int)); memcpy(strout+sizeof(int),&mnServcieStatus,sizeof(int)); if(mnServcieStatus == 0) { if(mnServiceCode<0) { memcpy(strout+2*sizeof(int),mstrError.data(),mstrError.length()); nsize = nsize + mstrError.length(); } } mpBroad->writeDatagram(strout,nsize,QHostAddress::Broadcast,mnBroadPort); // mpBroad->writeDatagram(strout,nsize,QHostAddress("10.16.1.239"),mnBroadPort); //Broad Data; }