annotate DEPENDENCIES/generic/include/boost/asio/detail/eventfd_select_interrupter.hpp @ 125:34e428693f5d vext

Vext -> Repoint
author Chris Cannam
date Thu, 14 Jun 2018 11:15:39 +0100
parents c530137014c0
children
rev   line source
Chris@16 1 //
Chris@16 2 // detail/eventfd_select_interrupter.hpp
Chris@16 3 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Chris@16 4 //
Chris@101 5 // Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
Chris@16 6 // Copyright (c) 2008 Roelof Naude (roelof.naude at gmail dot com)
Chris@16 7 //
Chris@16 8 // Distributed under the Boost Software License, Version 1.0. (See accompanying
Chris@16 9 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Chris@16 10 //
Chris@16 11
Chris@16 12 #ifndef BOOST_ASIO_DETAIL_EVENTFD_SELECT_INTERRUPTER_HPP
Chris@16 13 #define BOOST_ASIO_DETAIL_EVENTFD_SELECT_INTERRUPTER_HPP
Chris@16 14
Chris@16 15 #if defined(_MSC_VER) && (_MSC_VER >= 1200)
Chris@16 16 # pragma once
Chris@16 17 #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
Chris@16 18
Chris@16 19 #include <boost/asio/detail/config.hpp>
Chris@16 20
Chris@16 21 #if defined(BOOST_ASIO_HAS_EVENTFD)
Chris@16 22
Chris@16 23 #include <boost/asio/detail/push_options.hpp>
Chris@16 24
Chris@16 25 namespace boost {
Chris@16 26 namespace asio {
Chris@16 27 namespace detail {
Chris@16 28
Chris@16 29 class eventfd_select_interrupter
Chris@16 30 {
Chris@16 31 public:
Chris@16 32 // Constructor.
Chris@16 33 BOOST_ASIO_DECL eventfd_select_interrupter();
Chris@16 34
Chris@16 35 // Destructor.
Chris@16 36 BOOST_ASIO_DECL ~eventfd_select_interrupter();
Chris@16 37
Chris@16 38 // Recreate the interrupter's descriptors. Used after a fork.
Chris@16 39 BOOST_ASIO_DECL void recreate();
Chris@16 40
Chris@16 41 // Interrupt the select call.
Chris@16 42 BOOST_ASIO_DECL void interrupt();
Chris@16 43
Chris@16 44 // Reset the select interrupt. Returns true if the call was interrupted.
Chris@16 45 BOOST_ASIO_DECL bool reset();
Chris@16 46
Chris@16 47 // Get the read descriptor to be passed to select.
Chris@16 48 int read_descriptor() const
Chris@16 49 {
Chris@16 50 return read_descriptor_;
Chris@16 51 }
Chris@16 52
Chris@16 53 private:
Chris@16 54 // Open the descriptors. Throws on error.
Chris@16 55 BOOST_ASIO_DECL void open_descriptors();
Chris@16 56
Chris@16 57 // Close the descriptors.
Chris@16 58 BOOST_ASIO_DECL void close_descriptors();
Chris@16 59
Chris@16 60 // The read end of a connection used to interrupt the select call. This file
Chris@16 61 // descriptor is passed to select such that when it is time to stop, a single
Chris@16 62 // 64bit value will be written on the other end of the connection and this
Chris@16 63 // descriptor will become readable.
Chris@16 64 int read_descriptor_;
Chris@16 65
Chris@16 66 // The write end of a connection used to interrupt the select call. A single
Chris@16 67 // 64bit non-zero value may be written to this to wake up the select which is
Chris@16 68 // waiting for the other end to become readable. This descriptor will only
Chris@16 69 // differ from the read descriptor when a pipe is used.
Chris@16 70 int write_descriptor_;
Chris@16 71 };
Chris@16 72
Chris@16 73 } // namespace detail
Chris@16 74 } // namespace asio
Chris@16 75 } // namespace boost
Chris@16 76
Chris@16 77 #include <boost/asio/detail/pop_options.hpp>
Chris@16 78
Chris@16 79 #if defined(BOOST_ASIO_HEADER_ONLY)
Chris@16 80 # include <boost/asio/detail/impl/eventfd_select_interrupter.ipp>
Chris@16 81 #endif // defined(BOOST_ASIO_HEADER_ONLY)
Chris@16 82
Chris@16 83 #endif // defined(BOOST_ASIO_HAS_EVENTFD)
Chris@16 84
Chris@16 85 #endif // BOOST_ASIO_DETAIL_EVENTFD_SELECT_INTERRUPTER_HPP