#pragma once #include #include namespace fc { class istream; class ostream; class string; namespace ssh { class client; namespace detail { class process_impl; }; /** * Enables communication with a process executed via * client::exec(). * * Process can only be created by mace::ssh::client. */ class process { //: public fc::retainable { public: //typedef fc::shared_ptr ptr; process( const process& p ); process( process&& p ); process(); ~process(); bool valid()const; /** * Blocks until the result code of the process has been returned. */ int result(); /** * @brief returns a stream that writes to the procss' stdin */ fc::ostream& in_stream(); /** * @brief returns a stream that reads from the process' stdout */ fc::istream& out_stream(); /** * @brief returns a stream that reads from the process' stderr */ fc::istream& err_stream(); private: friend class client; process( client& c, const fc::string& cmd, const fc::string& pty_type = fc::string() ); fc::shared_ptr my; }; } } // fc::ssh