Files
DefaultVPN/ipc/ipcserverprocess.cpp

94 lines
2.6 KiB
C++
Raw Normal View History

2021-02-02 01:47:40 +03:00
#include "ipcserverprocess.h"
2022-08-10 22:15:00 +03:00
#include "ipc.h"
2021-02-02 01:47:40 +03:00
#include <QProcess>
2021-09-15 08:03:28 -07:00
#ifndef Q_OS_IOS
2021-02-02 01:47:40 +03:00
IpcServerProcess::IpcServerProcess(QObject *parent) :
IpcProcessInterfaceSource(parent),
2021-02-02 22:51:31 +03:00
m_process(QSharedPointer<QProcess>(new QProcess()))
2021-02-02 01:47:40 +03:00
{
connect(m_process.data(), &QProcess::errorOccurred, this, &IpcServerProcess::errorOccurred);
connect(m_process.data(), QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished), this, &IpcServerProcess::finished);
2021-06-12 11:59:36 +03:00
connect(m_process.data(), &QProcess::readyRead, this, &IpcServerProcess::readyRead);
connect(m_process.data(), &QProcess::readyReadStandardError, this, &IpcServerProcess::readyReadStandardError);
connect(m_process.data(), &QProcess::readyReadStandardOutput, this, &IpcServerProcess::readyReadStandardOutput);
connect(m_process.data(), &QProcess::started, this, &IpcServerProcess::started);
connect(m_process.data(), &QProcess::stateChanged, this, &IpcServerProcess::stateChanged);
2021-02-02 22:51:31 +03:00
connect(m_process.data(), &QProcess::errorOccurred, [&](QProcess::ProcessError error){
qDebug() << "IpcServerProcess errorOccurred " << error;
});
2021-02-02 01:47:40 +03:00
}
2021-06-01 18:18:09 +03:00
IpcServerProcess::~IpcServerProcess()
{
qDebug() << "IpcServerProcess::~IpcServerProcess";
}
2021-02-02 01:47:40 +03:00
void IpcServerProcess::start()
{
2022-08-10 22:15:00 +03:00
if (m_process->program().isEmpty()) {
qDebug() << "IpcServerProcess failed to start, program is empty";
}
2021-02-02 01:47:40 +03:00
m_process->start();
2021-02-02 22:51:31 +03:00
qDebug() << "IpcServerProcess started, " << m_process->program() << m_process->arguments();
m_process->waitForStarted();
2021-02-02 01:47:40 +03:00
}
void IpcServerProcess::close()
{
m_process->close();
}
void IpcServerProcess::setArguments(const QStringList &arguments)
{
m_process->setArguments(arguments);
}
void IpcServerProcess::setInputChannelMode(QProcess::InputChannelMode mode)
{
m_process->setInputChannelMode(mode);
}
void IpcServerProcess::setNativeArguments(const QString &arguments)
{
2021-02-03 20:05:50 +03:00
#ifdef Q_OS_WIN
2021-02-02 01:47:40 +03:00
m_process->setNativeArguments(arguments);
2021-02-03 20:05:50 +03:00
#endif
2021-02-02 01:47:40 +03:00
}
void IpcServerProcess::setProcessChannelMode(QProcess::ProcessChannelMode mode)
{
m_process->setProcessChannelMode(mode);
}
2022-08-10 22:15:00 +03:00
void IpcServerProcess::setProgram(int programId)
2021-02-02 01:47:40 +03:00
{
2022-08-10 22:15:00 +03:00
m_process->setProgram(amnezia::permittedProcessPath(static_cast<amnezia::PermittedProcess>(programId)));
2021-02-02 01:47:40 +03:00
}
void IpcServerProcess::setWorkingDirectory(const QString &dir)
{
m_process->setWorkingDirectory(dir);
}
2021-06-12 11:59:36 +03:00
QByteArray IpcServerProcess::readAll()
{
return m_process->readAll();
}
2021-02-02 01:47:40 +03:00
QByteArray IpcServerProcess::readAllStandardError()
{
return m_process->readAllStandardError();
}
QByteArray IpcServerProcess::readAllStandardOutput()
{
return m_process->readAllStandardOutput();
}
2021-09-15 08:03:28 -07:00
#endif