summaryrefslogtreecommitdiffstats
path: root/qdbd/processexecutor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'qdbd/processexecutor.cpp')
-rw-r--r--qdbd/processexecutor.cpp150
1 files changed, 0 insertions, 150 deletions
diff --git a/qdbd/processexecutor.cpp b/qdbd/processexecutor.cpp
deleted file mode 100644
index 7ea2e6c..0000000
--- a/qdbd/processexecutor.cpp
+++ /dev/null
@@ -1,150 +0,0 @@
-/******************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the Qt Debug Bridge.
-**
-** $QT_BEGIN_LICENSE:COMM$
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see http://www.qt.io/terms-conditions. For further
-** information use the contact form at http://www.qt.io/contact-us.
-**
-** $QT_END_LICENSE$
-**
-******************************************************************************/
-#include "processexecutor.h"
-
-#include "../utils/make_unique.h"
-#include "processcommon.h"
-#include "stream.h"
-
-#include <QtCore/qdatastream.h>
-#include <QtCore/qdebug.h>
-#include <QtCore/qprocess.h>
-
-ProcessExecutor::ProcessExecutor(Stream *stream)
- : m_stream{stream},
- m_process{nullptr}
-{
- if (m_stream) {
- connect(m_stream, &Stream::packetAvailable, this, &Executor::receive);
- connect(m_stream, &Stream::closed, this, &Executor::onStreamClosed);
- }
-}
-
-void ProcessExecutor::receive(StreamPacket packet)
-{
- uint32_t typeValue;
- packet >> typeValue;
- auto type = toProcessPacketType(typeValue);
- switch (type) {
- case ProcessStart: {
- QString command;
- QStringList arguments;
- packet >> command >> arguments;
- startProcess(command, arguments);
- break;
- }
- case ProcessWrite: {
- QByteArray data;
- packet >> data;
- writeToProcess(data);
- break;
- }
- default:
- Q_ASSERT_X(false, "ProcessExecutor::receive", "Unsupported ProcessPacketType");
- break;
- }
-}
-
-void ProcessExecutor::onStarted()
-{
- qDebug() << "Process started";
-
- StreamPacket packet;
- packet << ProcessStarted;
-
- if (m_stream)
- m_stream->write(packet);
-}
-
-void ProcessExecutor::onReadyRead()
-{
- qDebug() << "Process readyRead";
- auto size = m_process->bytesAvailable();
- QByteArray read = m_process->read(size);
-
- StreamPacket packet;
- packet << ProcessRead;
- packet << read;
-
- if (m_stream)
- m_stream->write(packet);
-}
-
-void ProcessExecutor::onFinished(int exitCode, QProcess::ExitStatus exitStatus)
-{
- qDebug() << "Process finished:" << exitCode;
-
- QByteArray output = m_process->readAll();
-
- StreamPacket packet;
- packet << ProcessFinished;
- packet << exitCode;
- packet << (exitStatus == QProcess::NormalExit);
- packet << output;
-
- if (m_stream)
- m_stream->write(packet);
-}
-
-void ProcessExecutor::onErrorOccurred(QProcess::ProcessError error)
-{
- qDebug() << "Process error:" << error;
-
- StreamPacket packet;
- packet << ProcessError;
- uint32_t errorValue = static_cast<uint32_t>(error);
- packet << errorValue;
-
- if (m_stream)
- m_stream->write(packet);
-}
-
-void ProcessExecutor::onStreamClosed()
-{
- m_stream = nullptr;
- if (m_process) {
- m_process->kill();
- }
-}
-
-void ProcessExecutor::startProcess(const QString &command, const QStringList &arguments)
-{
- m_process = make_unique<QProcess>();
- // merge stdout and stderr
- m_process->setProcessChannelMode(QProcess::MergedChannels);
-
- connect(m_process.get(), &QProcess::started, this, &ProcessExecutor::onStarted);
- connect(m_process.get(), &QProcess::readyRead, this, &ProcessExecutor::onReadyRead);
- connect(m_process.get(), static_cast<void (QProcess::*)(int, QProcess::ExitStatus)>(&QProcess::finished),
- this, &ProcessExecutor::onFinished);
- connect(m_process.get(), &QProcess::errorOccurred, this, &ProcessExecutor::onErrorOccurred);
-
- qDebug() << "Running" << command << arguments;
- m_process->start(command, arguments);
-}
-
-void ProcessExecutor::writeToProcess(const QByteArray &data)
-{
- Q_ASSERT(m_process);
-
- qDebug() << "Writing to process:" << data;
- m_process->write(data);
-}