1 // Copyright (c) 2016 Klemens D. Morgenstern 2 // 3 // Distributed under the Boost Software License, Version 1.0. (See accompanying 4 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 5 6 #ifndef BOOST_PROCESS_WINDOWS_ON_EXIT_HPP_ 7 #define BOOST_PROCESS_WINDOWS_ON_EXIT_HPP_ 8 9 #include <boost/process/detail/config.hpp> 10 #include <boost/process/detail/handler_base.hpp> 11 #include <boost/process/detail/windows/async_handler.hpp> 12 #include <system_error> 13 #include <functional> 14 15 namespace boost { namespace process { namespace detail { namespace windows { 16 17 struct on_exit_ : boost::process::detail::windows::async_handler 18 { 19 std::function<void(int, const std::error_code&)> handler; on_exit_boost::process::detail::windows::on_exit_20 on_exit_(const std::function<void(int, const std::error_code&)> & handler) : handler(handler) 21 { 22 23 } 24 25 template<typename Executor> on_exit_handlerboost::process::detail::windows::on_exit_26 std::function<void(int, const std::error_code&)> on_exit_handler(Executor&) 27 { 28 auto handler_ = this->handler; 29 return [handler_](int exit_code, const std::error_code & ec) 30 { 31 handler_(static_cast<int>(exit_code), ec); 32 }; 33 34 } 35 }; 36 37 38 }}}} 39 #endif /* INCLUDE_BOOST_PROCESS_WINDOWS_ON_EXIT_HPP_ */ 40