#ifndef UNIQUE_PIPE_HH #define UNIQUE_PIPE_HH #include "unique_fd.hh" #include class unique_pipe { public: unique_pipe(); unique_pipe(unique_pipe&& fd); unique_pipe(unique_pipe const&) = delete; unique_pipe& operator=(unique_pipe const&) = delete; ~unique_pipe() = default; unique_pipe& operator=(unique_pipe&& fd); [[nodiscard]] int reader() const { return fd_[0].get(); } [[nodiscard]] int writer() const { return fd_[1].get(); } [[nodiscard]] explicit operator bool() const { return fd_[0] || fd_[1]; } void reset(); unique_fd release_reader(); unique_fd release_writer(); private: unique_fd fd_[2]; }; #endif // UNIQUE_PIPE_HH