processutils.h 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #ifndef PROCESSUTILS_H
  2. #define PROCESSUTILS_H
  3. #include <functional>
  4. #include <QStringList>
  5. #include <QByteArray>
  6. class QProcess;
  7. namespace vnotex
  8. {
  9. class ProcessUtils
  10. {
  11. public:
  12. enum State
  13. {
  14. Succeeded,
  15. Crashed,
  16. FailedToStart,
  17. FailedToWrite
  18. };
  19. ProcessUtils() = delete;
  20. static State start(const QString &p_program,
  21. const QStringList &p_args,
  22. const QByteArray &p_stdIn,
  23. int &p_exitCodeOnSuccess,
  24. QByteArray &p_stdOut,
  25. QByteArray &p_stdErr);
  26. static State start(const QString &p_program,
  27. const QStringList &p_args,
  28. const std::function<void(const QString &)> &p_logger,
  29. const bool &p_askedToStop);
  30. static State start(const QString &p_command,
  31. const std::function<void(const QString &)> &p_logger,
  32. const bool &p_askedToStop);
  33. static void startDetached(const QString &p_command);
  34. // Copied from QProcess code.
  35. static QStringList parseCombinedArgString(const QString &p_args);
  36. static QString combineArgString(const QStringList &p_args);
  37. private:
  38. static State handleProcess(QProcess *p_process,
  39. const QByteArray &p_stdIn,
  40. int &p_exitCodeOnSuccess,
  41. QByteArray &p_stdOut,
  42. QByteArray &p_stdErr);
  43. static State handleProcess(QProcess *p_process,
  44. const std::function<void(const QString &)> &p_logger,
  45. const bool &p_askedToStop);
  46. };
  47. }
  48. #endif // PROCESSUTILS_H