123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 |
- #ifndef BOOST_PROCESS_ASYNC_PIPE_HPP
- #define BOOST_PROCESS_ASYNC_PIPE_HPP
- #include <boost/config.hpp>
- #include <boost/process/v1/detail/config.hpp>
- #if defined(BOOST_POSIX_API)
- #include <boost/process/v1/detail/posix/async_pipe.hpp>
- #elif defined(BOOST_WINDOWS_API)
- #include <boost/process/v1/detail/windows/async_pipe.hpp>
- #endif
- namespace boost { namespace process { BOOST_PROCESS_V1_INLINE namespace v1 {
- #if defined(BOOST_PROCESS_DOXYGEN)
- class async_pipe
- {
- public:
-
- typedef platform_specific native_handle_type;
-
- typedef platform_specific handle_type;
- typedef typename handle_type::executor_type executor_type;
-
- inline async_pipe(boost::asio::io_context & ios);
-
- inline async_pipe(boost::asio::io_context & ios_source,
- boost::asio::io_context & ios_sink);
-
- inline async_pipe(boost::asio::io_context & ios, const std::string & name);
-
- inline async_pipe(boost::asio::io_context & ios_source,
- boost::asio::io_context & ios_sink, const std::string & name);
-
- async_pipe(const async_pipe& lhs);
-
- async_pipe(async_pipe&& lhs);
-
- template<class CharT, class Traits = std::char_traits<CharT>>
- explicit async_pipe(boost::asio::io_context & ios, const basic_pipe<CharT, Traits> & p);
-
- template<class CharT, class Traits = std::char_traits<CharT>>
- explicit async_pipe(boost::asio::io_context & ios_source,
- boost::asio::io_context & ios_sink,
- const basic_pipe<CharT, Traits> & p);
-
- template<class CharT, class Traits = std::char_traits<CharT>>
- inline async_pipe& operator=(const basic_pipe<CharT, Traits>& p);
-
- async_pipe& operator=(const async_pipe& lhs);
-
- async_pipe& operator=(async_pipe&& lhs);
-
- ~async_pipe();
-
- template<class CharT, class Traits = std::char_traits<CharT>>
- inline explicit operator basic_pipe<CharT, Traits>() const;
-
- void cancel();
-
- void close();
-
- void close(std::error_code & ec);
-
- bool is_open() const;
-
- void async_close();
-
- template<typename MutableBufferSequence>
- std::size_t read_some(const MutableBufferSequence & buffers);
-
- template<typename MutableBufferSequence>
- std::size_t write_some(const MutableBufferSequence & buffers);
-
- native_handle native_source() const {return const_cast<boost::asio::windows::stream_handle&>(_source).native();}
-
- native_handle native_sink () const {return const_cast<boost::asio::windows::stream_handle&>(_sink ).native();}
-
- template<typename MutableBufferSequence,
- typename ReadHandler>
- detail::dummy async_read_some(
- const MutableBufferSequence & buffers,
- ReadHandler &&handler);
-
- template<typename ConstBufferSequence,
- typename WriteHandler>
- detail::dummy async_write_some(
- const ConstBufferSequence & buffers,
- WriteHandler && handler);
-
- const handle_type & sink () const &;
-
- const handle_type & source() const &;
-
- handle_type && sink () &&;
-
- handle_type && source() &&;
-
- handle_type source(::boost::asio::io_context& ios) &&;
-
- handle_type sink (::boost::asio::io_context& ios) &&;
-
- handle_type source(::boost::asio::io_context& ios) const &;
-
- handle_type sink (::boost::asio::io_context& ios) const &;
- };
- #else
- using ::boost::process::v1::detail::api::async_pipe;
- #endif
- }}}
- #endif
|