diff options
author | DongHun Kwak <dh0128.kwak@samsung.com> | 2019-12-05 15:11:01 +0900 |
---|---|---|
committer | DongHun Kwak <dh0128.kwak@samsung.com> | 2019-12-05 15:11:01 +0900 |
commit | 3fdc3e5ee96dca5b11d1694975a65200787eab86 (patch) | |
tree | 5c1733853892b8397d67706fa453a9bd978d2102 /boost/process/detail/windows/basic_pipe.hpp | |
parent | 88e602c57797660ebe0f9e15dbd64c1ff16dead3 (diff) | |
download | boost-3fdc3e5ee96dca5b11d1694975a65200787eab86.tar.gz boost-3fdc3e5ee96dca5b11d1694975a65200787eab86.tar.bz2 boost-3fdc3e5ee96dca5b11d1694975a65200787eab86.zip |
Imported Upstream version 1.66.0upstream/1.66.0
Diffstat (limited to 'boost/process/detail/windows/basic_pipe.hpp')
-rw-r--r-- | boost/process/detail/windows/basic_pipe.hpp | 134 |
1 files changed, 67 insertions, 67 deletions
diff --git a/boost/process/detail/windows/basic_pipe.hpp b/boost/process/detail/windows/basic_pipe.hpp index 2471e60f6d..ca691c078e 100644 --- a/boost/process/detail/windows/basic_pipe.hpp +++ b/boost/process/detail/windows/basic_pipe.hpp @@ -6,14 +6,14 @@ #ifndef BOOST_PROCESS_DETAIL_WINDOWS_PIPE_HPP #define BOOST_PROCESS_DETAIL_WINDOWS_PIPE_HPP -#include <boost/detail/winapi/basic_types.hpp> -#include <boost/detail/winapi/error_codes.hpp> -#include <boost/detail/winapi/pipes.hpp> -#include <boost/detail/winapi/handles.hpp> -#include <boost/detail/winapi/file_management.hpp> -#include <boost/detail/winapi/get_last_error.hpp> -#include <boost/detail/winapi/access_rights.hpp> -#include <boost/detail/winapi/process.hpp> +#include <boost/winapi/basic_types.hpp> +#include <boost/winapi/error_codes.hpp> +#include <boost/winapi/pipes.hpp> +#include <boost/winapi/handles.hpp> +#include <boost/winapi/file_management.hpp> +#include <boost/winapi/get_last_error.hpp> +#include <boost/winapi/access_rights.hpp> +#include <boost/winapi/process.hpp> #include <boost/process/detail/windows/compare_handles.hpp> #include <system_error> #include <string> @@ -24,33 +24,33 @@ namespace boost { namespace process { namespace detail { namespace windows { template<class CharT, class Traits = std::char_traits<CharT>> class basic_pipe { - ::boost::detail::winapi::HANDLE_ _source = ::boost::detail::winapi::INVALID_HANDLE_VALUE_; - ::boost::detail::winapi::HANDLE_ _sink = ::boost::detail::winapi::INVALID_HANDLE_VALUE_; + ::boost::winapi::HANDLE_ _source = ::boost::winapi::INVALID_HANDLE_VALUE_; + ::boost::winapi::HANDLE_ _sink = ::boost::winapi::INVALID_HANDLE_VALUE_; public: typedef CharT char_type ; typedef Traits traits_type; typedef typename Traits::int_type int_type ; typedef typename Traits::pos_type pos_type ; typedef typename Traits::off_type off_type ; - typedef ::boost::detail::winapi::HANDLE_ native_handle_type; + typedef ::boost::winapi::HANDLE_ native_handle_type; - explicit basic_pipe(::boost::detail::winapi::HANDLE_ source, ::boost::detail::winapi::HANDLE_ sink) + explicit basic_pipe(::boost::winapi::HANDLE_ source, ::boost::winapi::HANDLE_ sink) : _source(source), _sink(sink) {} inline explicit basic_pipe(const std::string & name); inline basic_pipe(const basic_pipe& p); basic_pipe(basic_pipe&& lhs) : _source(lhs._source), _sink(lhs._sink) { - lhs._source = ::boost::detail::winapi::INVALID_HANDLE_VALUE_; - lhs._sink = ::boost::detail::winapi::INVALID_HANDLE_VALUE_; + lhs._source = ::boost::winapi::INVALID_HANDLE_VALUE_; + lhs._sink = ::boost::winapi::INVALID_HANDLE_VALUE_; } inline basic_pipe& operator=(const basic_pipe& p); inline basic_pipe& operator=(basic_pipe&& lhs); ~basic_pipe() { - if (_sink != ::boost::detail::winapi::INVALID_HANDLE_VALUE_) - ::boost::detail::winapi::CloseHandle(_sink); - if (_source != ::boost::detail::winapi::INVALID_HANDLE_VALUE_) - ::boost::detail::winapi::CloseHandle(_source); + if (_sink != ::boost::winapi::INVALID_HANDLE_VALUE_) + ::boost::winapi::CloseHandle(_sink); + if (_source != ::boost::winapi::INVALID_HANDLE_VALUE_) + ::boost::winapi::CloseHandle(_source); } native_handle_type native_source() const {return _source;} native_handle_type native_sink () const {return _sink;} @@ -60,21 +60,21 @@ public: basic_pipe() { - if (!::boost::detail::winapi::CreatePipe(&_source, &_sink, nullptr, 0)) + if (!::boost::winapi::CreatePipe(&_source, &_sink, nullptr, 0)) throw_last_error("CreatePipe() failed"); } int_type write(const char_type * data, int_type count) { - ::boost::detail::winapi::DWORD_ write_len; - if (!::boost::detail::winapi::WriteFile( + ::boost::winapi::DWORD_ write_len; + if (!::boost::winapi::WriteFile( _sink, data, count * sizeof(char_type), &write_len, nullptr )) { auto ec = ::boost::process::detail::get_last_error(); - if ((ec.value() == ::boost::detail::winapi::ERROR_BROKEN_PIPE_) || - (ec.value() == ::boost::detail::winapi::ERROR_NO_DATA_)) + if ((ec.value() == ::boost::winapi::ERROR_BROKEN_PIPE_) || + (ec.value() == ::boost::winapi::ERROR_NO_DATA_)) return 0; else throw process_error(ec, "WriteFile failed"); @@ -83,14 +83,14 @@ public: } int_type read(char_type * data, int_type count) { - ::boost::detail::winapi::DWORD_ read_len; - if (!::boost::detail::winapi::ReadFile( + ::boost::winapi::DWORD_ read_len; + if (!::boost::winapi::ReadFile( _source, data, count * sizeof(char_type), &read_len, nullptr )) { auto ec = ::boost::process::detail::get_last_error(); - if ((ec.value() == ::boost::detail::winapi::ERROR_BROKEN_PIPE_) || - (ec.value() == ::boost::detail::winapi::ERROR_NO_DATA_)) + if ((ec.value() == ::boost::winapi::ERROR_BROKEN_PIPE_) || + (ec.value() == ::boost::winapi::ERROR_NO_DATA_)) return 0; else throw process_error(ec, "ReadFile failed"); @@ -100,38 +100,38 @@ public: bool is_open() { - return (_source != ::boost::detail::winapi::INVALID_HANDLE_VALUE_) || - (_sink != ::boost::detail::winapi::INVALID_HANDLE_VALUE_); + return (_source != ::boost::winapi::INVALID_HANDLE_VALUE_) || + (_sink != ::boost::winapi::INVALID_HANDLE_VALUE_); } void close() { - ::boost::detail::winapi::CloseHandle(_source); - ::boost::detail::winapi::CloseHandle(_sink); - _source = ::boost::detail::winapi::INVALID_HANDLE_VALUE_; - _sink = ::boost::detail::winapi::INVALID_HANDLE_VALUE_; + ::boost::winapi::CloseHandle(_source); + ::boost::winapi::CloseHandle(_sink); + _source = ::boost::winapi::INVALID_HANDLE_VALUE_; + _sink = ::boost::winapi::INVALID_HANDLE_VALUE_; } }; template<class Char, class Traits> basic_pipe<Char, Traits>::basic_pipe(const basic_pipe & p) { - auto proc = ::boost::detail::winapi::GetCurrentProcess(); + auto proc = ::boost::winapi::GetCurrentProcess(); - if (p._source == ::boost::detail::winapi::INVALID_HANDLE_VALUE_) - _source = ::boost::detail::winapi::INVALID_HANDLE_VALUE_; - else if (!::boost::detail::winapi::DuplicateHandle( + if (p._source == ::boost::winapi::INVALID_HANDLE_VALUE_) + _source = ::boost::winapi::INVALID_HANDLE_VALUE_; + else if (!::boost::winapi::DuplicateHandle( proc, p._source, proc, &_source, 0, - static_cast<::boost::detail::winapi::BOOL_>(true), - ::boost::detail::winapi::DUPLICATE_SAME_ACCESS_)) + static_cast<::boost::winapi::BOOL_>(true), + ::boost::winapi::DUPLICATE_SAME_ACCESS_)) throw_last_error("Duplicate Pipe Failed"); - if (p._sink == ::boost::detail::winapi::INVALID_HANDLE_VALUE_) - _sink = ::boost::detail::winapi::INVALID_HANDLE_VALUE_; - else if (!::boost::detail::winapi::DuplicateHandle( + if (p._sink == ::boost::winapi::INVALID_HANDLE_VALUE_) + _sink = ::boost::winapi::INVALID_HANDLE_VALUE_; + else if (!::boost::winapi::DuplicateHandle( proc, p._sink, proc, &_sink, 0, - static_cast<::boost::detail::winapi::BOOL_>(true), - ::boost::detail::winapi::DUPLICATE_SAME_ACCESS_)) + static_cast<::boost::winapi::BOOL_>(true), + ::boost::winapi::DUPLICATE_SAME_ACCESS_)) throw_last_error("Duplicate Pipe Failed"); } @@ -143,23 +143,23 @@ basic_pipe<Char, Traits>::basic_pipe(const std::string & name) static constexpr int FILE_FLAG_OVERLAPPED_ = 0x40000000; //temporary //static constexpr int FILE_ATTRIBUTE_NORMAL_ = 0x00000080; //temporary - ::boost::detail::winapi::HANDLE_ source = ::boost::detail::winapi::create_named_pipe( + ::boost::winapi::HANDLE_ source = ::boost::winapi::create_named_pipe( name.c_str(), - ::boost::detail::winapi::PIPE_ACCESS_INBOUND_ + ::boost::winapi::PIPE_ACCESS_INBOUND_ | FILE_FLAG_OVERLAPPED_, //write flag 0, 1, 8192, 8192, 0, nullptr); - if (source == boost::detail::winapi::INVALID_HANDLE_VALUE_) + if (source == boost::winapi::INVALID_HANDLE_VALUE_) ::boost::process::detail::throw_last_error("create_named_pipe() failed"); - ::boost::detail::winapi::HANDLE_ sink = boost::detail::winapi::create_file( + ::boost::winapi::HANDLE_ sink = boost::winapi::create_file( name.c_str(), - ::boost::detail::winapi::GENERIC_WRITE_, 0, nullptr, + ::boost::winapi::GENERIC_WRITE_, 0, nullptr, OPEN_EXISTING_, FILE_FLAG_OVERLAPPED_, //to allow read nullptr); - if (sink == ::boost::detail::winapi::INVALID_HANDLE_VALUE_) + if (sink == ::boost::winapi::INVALID_HANDLE_VALUE_) ::boost::process::detail::throw_last_error("create_file() failed"); _source = source; @@ -169,22 +169,22 @@ basic_pipe<Char, Traits>::basic_pipe(const std::string & name) template<class Char, class Traits> basic_pipe<Char, Traits>& basic_pipe<Char, Traits>::operator=(const basic_pipe & p) { - auto proc = ::boost::detail::winapi::GetCurrentProcess(); + auto proc = ::boost::winapi::GetCurrentProcess(); - if (p._source == ::boost::detail::winapi::INVALID_HANDLE_VALUE_) - _source = ::boost::detail::winapi::INVALID_HANDLE_VALUE_; - else if (!::boost::detail::winapi::DuplicateHandle( + if (p._source == ::boost::winapi::INVALID_HANDLE_VALUE_) + _source = ::boost::winapi::INVALID_HANDLE_VALUE_; + else if (!::boost::winapi::DuplicateHandle( proc, p._source, proc, &_source, 0, - static_cast<::boost::detail::winapi::BOOL_>(true), - ::boost::detail::winapi::DUPLICATE_SAME_ACCESS_)) + static_cast<::boost::winapi::BOOL_>(true), + ::boost::winapi::DUPLICATE_SAME_ACCESS_)) throw_last_error("Duplicate Pipe Failed"); - if (p._sink == ::boost::detail::winapi::INVALID_HANDLE_VALUE_) - _sink = ::boost::detail::winapi::INVALID_HANDLE_VALUE_; - else if (!::boost::detail::winapi::DuplicateHandle( + if (p._sink == ::boost::winapi::INVALID_HANDLE_VALUE_) + _sink = ::boost::winapi::INVALID_HANDLE_VALUE_; + else if (!::boost::winapi::DuplicateHandle( proc, p._sink, proc, &_sink, 0, - static_cast<::boost::detail::winapi::BOOL_>(true), - ::boost::detail::winapi::DUPLICATE_SAME_ACCESS_)) + static_cast<::boost::winapi::BOOL_>(true), + ::boost::winapi::DUPLICATE_SAME_ACCESS_)) throw_last_error("Duplicate Pipe Failed"); return *this; @@ -193,16 +193,16 @@ basic_pipe<Char, Traits>& basic_pipe<Char, Traits>::operator=(const basic_pipe & template<class Char, class Traits> basic_pipe<Char, Traits>& basic_pipe<Char, Traits>::operator=(basic_pipe && lhs) { - if (_source != ::boost::detail::winapi::INVALID_HANDLE_VALUE_) - ::boost::detail::winapi::CloseHandle(_source); + if (_source != ::boost::winapi::INVALID_HANDLE_VALUE_) + ::boost::winapi::CloseHandle(_source); - if (_sink != ::boost::detail::winapi::INVALID_HANDLE_VALUE_) - ::boost::detail::winapi::CloseHandle(_sink); + if (_sink != ::boost::winapi::INVALID_HANDLE_VALUE_) + ::boost::winapi::CloseHandle(_sink); _source = lhs._source; _sink = lhs._sink; - lhs._source = ::boost::detail::winapi::INVALID_HANDLE_VALUE_; - lhs._sink = ::boost::detail::winapi::INVALID_HANDLE_VALUE_; + lhs._source = ::boost::winapi::INVALID_HANDLE_VALUE_; + lhs._sink = ::boost::winapi::INVALID_HANDLE_VALUE_; return *this; } |