#include "ipcserverprocess.h" #include "ipc.h" #include #ifndef Q_OS_IOS IpcServerProcess::IpcServerProcess(QObject *parent) : IpcProcessInterfaceSource(parent), m_process(QSharedPointer(new QProcess())) { connect(m_process.data(), &QProcess::errorOccurred, this, &IpcServerProcess::errorOccurred); connect(m_process.data(), QOverload::of(&QProcess::finished), this, &IpcServerProcess::finished); 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); connect(m_process.data(), &QProcess::errorOccurred, [&](QProcess::ProcessError error){ qDebug() << "IpcServerProcess errorOccurred " << error; }); } IpcServerProcess::~IpcServerProcess() { qDebug() << "IpcServerProcess::~IpcServerProcess"; } void IpcServerProcess::start() { if (m_process->program().isEmpty()) { qDebug() << "IpcServerProcess failed to start, program is empty"; } m_process->start(); qDebug() << "IpcServerProcess started, " << m_process->program() << m_process->arguments(); m_process->waitForStarted(); } 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) { #ifdef Q_OS_WIN m_process->setNativeArguments(arguments); #endif } void IpcServerProcess::setProcessChannelMode(QProcess::ProcessChannelMode mode) { m_process->setProcessChannelMode(mode); } void IpcServerProcess::setProgram(int programId) { m_process->setProgram(amnezia::permittedProcessPath(static_cast(programId))); } void IpcServerProcess::setWorkingDirectory(const QString &dir) { m_process->setWorkingDirectory(dir); } QByteArray IpcServerProcess::readAll() { return m_process->readAll(); } QByteArray IpcServerProcess::readAllStandardError() { return m_process->readAllStandardError(); } QByteArray IpcServerProcess::readAllStandardOutput() { return m_process->readAllStandardOutput(); } #endif