1 #ifndef ABSTRACTPROCESS_H
2 #define ABSTRACTPROCESS_H
6 #include <condition_variable>
24 std::uint32_t
exit_code_ =
static_cast<std::uint32_t
>(-1);
58 virtual void start(std::string
const &command,
bool use_input) = 0;
102 std::lock_guard<std::mutex> lock(
mutex_);
133 virtual void start(std::string
const &cmd, std::string
const &env,
bool use_input) = 0;
Definition: AbstractProcess.h:54
virtual std::vector< char > const & stderr_bytes() const =0
virtual void close_input()=0
virtual ProcessResult wait(int time=INT_MAX)=0
virtual void start(std::string const &command, bool use_input)=0
virtual void write_input(char const *ptr, int len)=0
virtual bool is_running() const =0
virtual ~AbstractProcess()
Definition: AbstractProcess.h:56
virtual int get_exit_code() const =0
virtual std::vector< char > const & stdout_bytes() const =0
Definition: AbstractProcess.h:71
size_t max_output_queue_size_
Definition: AbstractProcess.h:85
virtual void close_input()=0
std::deque< char > output_queue_
Definition: AbstractProcess.h:81
std::function< void(bool, std::shared_ptr< void >)> completed_fn_
Definition: AbstractProcess.h:79
void set_max_output_queue_size(size_t n)
Definition: AbstractProcess.h:100
std::condition_variable cond_
Definition: AbstractProcess.h:74
void notify_completed()
Definition: AbstractProcess.h:113
virtual bool is_running() const =0
process::helper::dir_string_t change_dir_
Definition: AbstractProcess.h:76
virtual void start(std::string const &cmd, std::string const &env, bool use_input)=0
virtual ~AbstractPtyProcess()
Definition: AbstractProcess.h:91
int pop_output(char *ptr, int len)
Definition: AbstractProcess.cpp:16
virtual int read_output(char *ptr, int len)=0
virtual void write_input(char const *ptr, int len)=0
virtual int get_exit_code() const =0
std::string get_message() const
Definition: AbstractProcess.cpp:31
virtual ProcessResult wait(int time=INT_MAX)=0
std::vector< char > const & stdout_bytes() const
Definition: AbstractProcess.h:123
void set_change_dir(process::helper::dir_string_t const &dir)
Definition: AbstractProcess.h:93
std::vector< char > stderr_bytes_
Definition: AbstractProcess.h:83
std::vector< char > output_vector_
Definition: AbstractProcess.h:82
void write_output(char const *buf, size_t len)
Definition: AbstractProcess.cpp:4
std::vector< char > const & stderr_bytes() const
Definition: AbstractProcess.h:127
std::mutex mutex_
Definition: AbstractProcess.h:73
void clear_message()
Definition: AbstractProcess.cpp:38
std::shared_ptr< void > user_data_
Definition: AbstractProcess.h:78
void set_completion_callback(std::function< void(bool, std::shared_ptr< void >)> fn, std::shared_ptr< void > userdata)
Definition: AbstractProcess.h:107
std::string dir_string_t
Definition: ProcessHelper.h:12
Definition: AbstractProcess.h:21
bool started_
Definition: AbstractProcess.h:22
std::uint32_t exit_code_
Definition: AbstractProcess.h:24
std::uint32_t exit_code() const
Definition: AbstractProcess.h:38
std::uint32_t error_code() const
Definition: AbstractProcess.h:43
std::string const & error_message() const
Definition: AbstractProcess.h:48
bool running() const
Definition: AbstractProcess.h:33
bool started() const
Definition: AbstractProcess.h:28
std::string error_message_
Definition: AbstractProcess.h:26
std::uint32_t error_code_
Definition: AbstractProcess.h:25
bool running_
Definition: AbstractProcess.h:23