![]()  | 
  
    MySQL 9.5.0
    
   Source Code Documentation 
   | 
 
#include <process_launcher.h>
Public Types | |
| enum class | ShutdownEvent { TERM , KILL , ABRT } | 
| using | exit_status_type = ExitStatus | 
| using | process_handle_type = SpawnedProcess::handle_type | 
| using | process_id_type = SpawnedProcess::id_type | 
  Public Types inherited from mysql_harness::SpawnedProcess | |
| using | handle_type = pid_t | 
| using | id_type = pid_t | 
Public Member Functions | |
| ProcessLauncher (std::string pexecutable_path, std::vector< std::string > pargs, std::vector< std::pair< std::string, std::string > > penv_vars, bool predirect_stderr=true) | |
| Creates a new process and launch it.  More... | |
| ProcessLauncher (const ProcessLauncher &)=delete | |
| ProcessLauncher | operator= (const ProcessLauncher &)=delete | 
| ProcessLauncher (ProcessLauncher &&rhs) noexcept | |
| ~ProcessLauncher () override | |
| void | start (bool use_std_io_handlers=false) | 
| Launches the child process, and makes pipes available for read/write.  More... | |
| void | start (bool use_stdout_handler, bool use_stdin_handler) | 
| int | read (char *buf, size_t count, std::chrono::milliseconds timeout) | 
| Read up to a 'count' bytes from the stdout of the child process.  More... | |
| int | write (const char *buf, size_t count) | 
| Writes several butes into stdin of child process.  More... | |
| exit_status_type | kill () | 
| Kills the child process and returns process' exit code.  More... | |
| process_id_type | get_pid () const | 
| Returns the child process id.  More... | |
| process_handle_type | get_process_handle () const | 
| Returns the child process handle.  More... | |
| stdx::expected< exit_status_type, std::error_code > | exit_code () | 
| get exit-code.  More... | |
| int | wait (std::chrono::milliseconds timeout=std::chrono::milliseconds(1000)) | 
| Wait for the child process to exists and returns its exit code.  More... | |
| exit_status_type | native_wait (std::chrono::milliseconds timeout=std::chrono::milliseconds(1000)) | 
| void | end_of_write () | 
| Closes pipe to process' STDIN in order to notify the process that all data was sent.  More... | |
| std::error_code | send_shutdown_event (ShutdownEvent event=ShutdownEvent::TERM) const noexcept | 
| Sends a shutdown event to child process (SIGTERM on Unix, Ctrl+C on Win)  More... | |
  Public Member Functions inherited from mysql_harness::SpawnedProcess | |
| SpawnedProcess (std::string pexecutable_path, std::vector< std::string > pargs, std::vector< std::pair< std::string, std::string > > penv_vars, bool predirect_stderr=true) | |
| SpawnedProcess (const SpawnedProcess &)=delete | |
| SpawnedProcess & | operator= (const SpawnedProcess &)=delete | 
| SpawnedProcess (SpawnedProcess &&)=default | |
| SpawnedProcess & | operator= (SpawnedProcess &&)=default | 
| virtual | ~SpawnedProcess ()=default | 
| std::string | get_cmd_line () const | 
| std::string | executable () const | 
Private Member Functions | |
| exit_status_type | close () | 
| Closes child process and returns process' exit code.  More... | |
Private Attributes | |
| std::mutex | fd_in_mtx_ | 
| std::mutex | fd_out_mtx_ | 
| bool | is_alive {false} | 
Additional Inherited Members | |
  Protected Attributes inherited from mysql_harness::SpawnedProcess | |
| std::string | executable_path | 
| std::vector< std::string > | args | 
| std::vector< std::pair< std::string, std::string > > | env_vars | 
| pid_t | childpid {-1} | 
| int | fd_in [2] {-1, -1} | 
| int | fd_out [2] {-1, -1} | 
| bool | redirect_stderr | 
      
  | 
  strong | 
      
  | 
  inline | 
Creates a new process and launch it.
If redirect_stderr is true, the child's stderr is redirected to the same stream than child's stdout.
      
  | 
  delete | 
      
  | 
  inlinenoexcept | 
      
  | 
  override | 
      
  | 
  private | 
Closes child process and returns process' exit code.
| std::system_error | if sending signal to child process fails | 
| std::runtime_error | if waiting for process to change state fails | 
| void mysql_harness::ProcessLauncher::end_of_write | ( | ) | 
Closes pipe to process' STDIN in order to notify the process that all data was sent.
| stdx::expected< ProcessLauncher::exit_status_type, std::error_code > mysql_harness::ProcessLauncher::exit_code | ( | ) | 
get exit-code.
| ProcessLauncher::process_handle_type mysql_harness::ProcessLauncher::get_pid | ( | ) | const | 
Returns the child process id.
| ProcessLauncher::process_handle_type mysql_harness::ProcessLauncher::get_process_handle | ( | ) | const | 
Returns the child process handle.
| ProcessLauncher::exit_status_type mysql_harness::ProcessLauncher::kill | ( | ) | 
Kills the child process and returns process' exit code.
| ProcessLauncher::exit_status_type mysql_harness::ProcessLauncher::native_wait | ( | std::chrono::milliseconds | timeout = std::chrono::milliseconds(1000) | ) | 
      
  | 
  delete | 
| int mysql_harness::ProcessLauncher::read | ( | char * | buf, | 
| size_t | count, | ||
| std::chrono::milliseconds | timeout | ||
| ) | 
Read up to a 'count' bytes from the stdout of the child process.
This method blocks until the amount of bytes is read or specified timeout expires.
| buf | already allocated buffer where the read data will be stored. | 
| count | the maximum amount of bytes to read. | 
| timeout | timeout (in milliseconds) for the read to complete | 
      
  | 
  noexcept | 
Sends a shutdown event to child process (SIGTERM on Unix, Ctrl+C on Win)
| event | type of shutdown event | 
| void mysql_harness::ProcessLauncher::start | ( | bool | use_std_io_handlers = false | ) | 
Launches the child process, and makes pipes available for read/write.
| void mysql_harness::ProcessLauncher::start | ( | bool | use_stdout_handler, | 
| bool | use_stdin_handler | ||
| ) | 
| int mysql_harness::ProcessLauncher::wait | ( | std::chrono::milliseconds | timeout = std::chrono::milliseconds(1000) | ) | 
Wait for the child process to exists and returns its exit code.
If the child process is already dead, wait() just returns.
| std::runtime_error | if process exited with a signal | 
| int mysql_harness::ProcessLauncher::write | ( | const char * | buf, | 
| size_t | count | ||
| ) | 
Writes several butes into stdin of child process.
Returns an shcore::Exception in case of error when writing.
      
  | 
  private | 
      
  | 
  private | 
      
  | 
  private |