Guitar
ProcessWin.h
Go to the documentation of this file.
1 #ifndef PROCESSWIN_H
2 #define PROCESSWIN_H
3 
4 #include "AbstractProcess.h"
5 
6 // #define USE_WINPTY
7 
8 class ProcessWin : public AbstractProcess {
9 private:
10  struct Private;
12  void writeOutput(char const *buf, size_t len);
13  bool exec_win(const std::string &cmd, bool use_input);
14 public:
15  ProcessWin();
16  ~ProcessWin();
17  std::string outstring() const;
18  std::string errstring() const;
19  void start(const std::string &command, bool use_input);
20  int wait();
21  void writeInput(const char *ptr, int len);
22  void closeInput(bool justnow);
23  void readResult(std::vector<char> *out);
24  void stop();
25  int getExitCode() const;
26 
27  bool isRunning() const;
28  const std::vector<char> &stdout_bytes() const;
29  const std::vector<char> &stderr_bytes() const;
30 };
31 
32 #if 0
33 class ProcessWinPty : public AbstractPtyProcess {
34 private:
35  struct Private;
36  Private *m;
37 
38  std::string exec_winpty(const std::string &cmd, const std::string &env, bool use_input);
39 public:
40  ProcessWinPty();
41  ~ProcessWinPty();
42  bool isRunning() const;
43  void writeInput(const char *ptr, int len);
44  void start(const std::string &cmd, std::string const &env, bool use_input);
45  bool wait(unsigned long time = ULONG_MAX);
46  void stop();
47  int getExitCode() const;
48  void readResult(std::vector<char> *out);
49  void closeInput();
50 
51  int readOutputStreaming(char *ptr, int len) override;
52 };
53 #endif
54 
56 private:
57  struct Private;
59  bool exec_win_conpty(const std::string &cmd, const std::string &env, bool use_input);
60 public:
63  void closeInput();
64  bool isRunning() const override;
65  void writeInput(const char *ptr, int len) override;
66  void start(const std::string &cmd, std::string const &env, bool use_input) override;
67  bool wait(unsigned long time = ULONG_MAX) override;
68  void stop() override;
69  int getExitCode() const override;
70  virtual int readOutputStreaming(char *ptr, int len);
71 };
72 
73 #endif // PROCESSWIN_H
Definition: AbstractProcess.h:13
Definition: AbstractProcess.h:31
virtual void writeInput(char const *ptr, int len)=0
virtual bool wait(unsigned long time=ULONG_MAX)=0
virtual int readOutputStreaming(char *ptr, int len)=0
virtual void start(std::string const &cmd, std::string const &env, bool use_input)=0
virtual void stop()=0
virtual int getExitCode() const =0
virtual bool isRunning() const =0
Definition: ProcessWin.h:55
bool isRunning() const override
Definition: ProcessWin.cpp:610
~ProcessWinConPTY()
Definition: ProcessWin.cpp:507
void writeInput(const char *ptr, int len) override
Definition: ProcessWin.cpp:612
int getExitCode() const override
Definition: ProcessWin.cpp:644
void closeInput()
Definition: ProcessWin.cpp:602
bool wait(unsigned long time=ULONG_MAX) override
Definition: ProcessWin.cpp:627
bool exec_win_conpty(const std::string &cmd, const std::string &env, bool use_input)
Definition: ProcessWin.cpp:513
void stop() override
Definition: ProcessWin.cpp:639
virtual int readOutputStreaming(char *ptr, int len)
Definition: ProcessWin.cpp:649
ProcessWinConPTY()
Definition: ProcessWin.cpp:501
Private * m
Definition: ProcessWin.h:57
void start(const std::string &cmd, std::string const &env, bool use_input) override
Definition: ProcessWin.cpp:620
Definition: ProcessWin.h:8
bool isRunning() const
Definition: ProcessWin.cpp:250
~ProcessWin()
Definition: ProcessWin.cpp:125
std::string outstring() const
Definition: ProcessWin.cpp:195
int getExitCode() const
Definition: ProcessWin.cpp:245
void readResult(std::vector< char > *out)
Definition: ProcessWin.cpp:234
std::string errstring() const
Definition: ProcessWin.cpp:204
ProcessWin()
Definition: ProcessWin.cpp:119
int wait()
Definition: ProcessWin.cpp:216
const std::vector< char > & stdout_bytes() const
Definition: ProcessWin.cpp:255
const std::vector< char > & stderr_bytes() const
Definition: ProcessWin.cpp:260
void start(const std::string &command, bool use_input)
Definition: ProcessWin.cpp:209
void stop()
Definition: ProcessWin.cpp:240
bool exec_win(const std::string &cmd, bool use_input)
Definition: ProcessWin.cpp:138
void writeInput(const char *ptr, int len)
Definition: ProcessWin.cpp:226
void closeInput(bool justnow)
Definition: ProcessWin.cpp:230
void writeOutput(char const *buf, size_t len)
Definition: ProcessWin.cpp:131
Private * m
Definition: ProcessWin.h:10
Definition: ProcessWin.cpp:494
Definition: ProcessWin.cpp:107