1 // 2 // ts/netfwd.hpp 3 // ~~~~~~~~~~~~~ 4 // 5 // Copyright (c) 2003-2021 Christopher M. Kohlhoff (chris at kohlhoff dot com) 6 // 7 // Distributed under the Boost Software License, Version 1.0. (See accompanying 8 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 // 10 11 #ifndef BOOST_ASIO_TS_NETFWD_HPP 12 #define BOOST_ASIO_TS_NETFWD_HPP 13 14 #if defined(_MSC_VER) && (_MSC_VER >= 1200) 15 # pragma once 16 #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) 17 18 #include <boost/asio/detail/config.hpp> 19 20 #if defined(BOOST_ASIO_HAS_CHRONO) 21 # include <boost/asio/detail/chrono.hpp> 22 #endif // defined(BOOST_ASIO_HAS_CHRONO) 23 24 #if defined(BOOST_ASIO_HAS_BOOST_DATE_TIME) 25 # include <boost/asio/detail/date_time_fwd.hpp> 26 #endif // defined(BOOST_ASIO_HAS_BOOST_DATE_TIME) 27 28 #if !defined(BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT) 29 #include <boost/asio/execution/blocking.hpp> 30 #include <boost/asio/execution/outstanding_work.hpp> 31 #include <boost/asio/execution/relationship.hpp> 32 #endif // !defined(BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT) 33 34 #if !defined(GENERATING_DOCUMENTATION) 35 36 #include <boost/asio/detail/push_options.hpp> 37 38 namespace boost { 39 namespace asio { 40 41 class execution_context; 42 43 template <typename T, typename Executor> 44 class executor_binder; 45 46 #if !defined(BOOST_ASIO_EXECUTOR_WORK_GUARD_DECL) 47 #define BOOST_ASIO_EXECUTOR_WORK_GUARD_DECL 48 49 template <typename Executor, typename = void, typename = void> 50 class executor_work_guard; 51 52 #endif // !defined(BOOST_ASIO_EXECUTOR_WORK_GUARD_DECL) 53 54 template <typename Blocking, typename Relationship, typename Allocator> 55 class basic_system_executor; 56 57 #if defined(BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT) 58 59 class executor; 60 61 typedef executor any_io_executor; 62 63 #else // defined(BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT) 64 65 namespace execution { 66 67 #if !defined(BOOST_ASIO_EXECUTION_ANY_EXECUTOR_FWD_DECL) 68 #define BOOST_ASIO_EXECUTION_ANY_EXECUTOR_FWD_DECL 69 70 #if defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) 71 72 template <typename... SupportableProperties> 73 class any_executor; 74 75 #else // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) 76 77 template <typename = void, typename = void, typename = void, 78 typename = void, typename = void, typename = void, 79 typename = void, typename = void, typename = void> 80 class any_executor; 81 82 #endif // defined(BOOST_ASIO_HAS_VARIADIC_TEMPLATES) 83 84 #endif // !defined(BOOST_ASIO_EXECUTION_ANY_EXECUTOR_FWD_DECL) 85 86 template <typename U> 87 struct context_as_t; 88 89 template <typename Property> 90 struct prefer_only; 91 92 } // namespace execution 93 94 class any_io_executor; 95 96 #endif // defined(BOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT) 97 98 template <typename Executor> 99 class strand; 100 101 class io_context; 102 103 template <typename Clock> 104 struct wait_traits; 105 106 #if defined(BOOST_ASIO_HAS_BOOST_DATE_TIME) 107 108 template <typename Time> 109 struct time_traits; 110 111 #endif // defined(BOOST_ASIO_HAS_BOOST_DATE_TIME) 112 113 #if !defined(BOOST_ASIO_BASIC_WAITABLE_TIMER_FWD_DECL) 114 #define BOOST_ASIO_BASIC_WAITABLE_TIMER_FWD_DECL 115 116 template <typename Clock, 117 typename WaitTraits = wait_traits<Clock>, 118 typename Executor = any_io_executor> 119 class basic_waitable_timer; 120 121 #endif // !defined(BOOST_ASIO_BASIC_WAITABLE_TIMER_FWD_DECL) 122 123 #if defined(BOOST_ASIO_HAS_CHRONO) 124 125 typedef basic_waitable_timer<chrono::system_clock> system_timer; 126 127 typedef basic_waitable_timer<chrono::steady_clock> steady_timer; 128 129 typedef basic_waitable_timer<chrono::high_resolution_clock> 130 high_resolution_timer; 131 132 #endif // defined(BOOST_ASIO_HAS_CHRONO) 133 134 #if !defined(BOOST_ASIO_BASIC_SOCKET_FWD_DECL) 135 #define BOOST_ASIO_BASIC_SOCKET_FWD_DECL 136 137 template <typename Protocol, typename Executor = any_io_executor> 138 class basic_socket; 139 140 #endif // !defined(BOOST_ASIO_BASIC_SOCKET_FWD_DECL) 141 142 #if !defined(BOOST_ASIO_BASIC_DATAGRAM_SOCKET_FWD_DECL) 143 #define BOOST_ASIO_BASIC_DATAGRAM_SOCKET_FWD_DECL 144 145 template <typename Protocol, typename Executor = any_io_executor> 146 class basic_datagram_socket; 147 148 #endif // !defined(BOOST_ASIO_BASIC_DATAGRAM_SOCKET_FWD_DECL) 149 150 #if !defined(BOOST_ASIO_BASIC_STREAM_SOCKET_FWD_DECL) 151 #define BOOST_ASIO_BASIC_STREAM_SOCKET_FWD_DECL 152 153 // Forward declaration with defaulted arguments. 154 template <typename Protocol, typename Executor = any_io_executor> 155 class basic_stream_socket; 156 157 #endif // !defined(BOOST_ASIO_BASIC_STREAM_SOCKET_FWD_DECL) 158 159 #if !defined(BOOST_ASIO_BASIC_SOCKET_ACCEPTOR_FWD_DECL) 160 #define BOOST_ASIO_BASIC_SOCKET_ACCEPTOR_FWD_DECL 161 162 template <typename Protocol, typename Executor = any_io_executor> 163 class basic_socket_acceptor; 164 165 #endif // !defined(BOOST_ASIO_BASIC_SOCKET_ACCEPTOR_FWD_DECL) 166 167 #if !defined(BOOST_ASIO_BASIC_SOCKET_STREAMBUF_FWD_DECL) 168 #define BOOST_ASIO_BASIC_SOCKET_STREAMBUF_FWD_DECL 169 170 // Forward declaration with defaulted arguments. 171 template <typename Protocol, 172 #if defined(BOOST_ASIO_HAS_BOOST_DATE_TIME) \ 173 || defined(GENERATING_DOCUMENTATION) 174 typename Clock = boost::posix_time::ptime, 175 typename WaitTraits = time_traits<Clock> > 176 #else 177 typename Clock = chrono::steady_clock, 178 typename WaitTraits = wait_traits<Clock> > 179 #endif 180 class basic_socket_streambuf; 181 182 #endif // !defined(BOOST_ASIO_BASIC_SOCKET_STREAMBUF_FWD_DECL) 183 184 #if !defined(BOOST_ASIO_BASIC_SOCKET_IOSTREAM_FWD_DECL) 185 #define BOOST_ASIO_BASIC_SOCKET_IOSTREAM_FWD_DECL 186 187 // Forward declaration with defaulted arguments. 188 template <typename Protocol, 189 #if defined(BOOST_ASIO_HAS_BOOST_DATE_TIME) \ 190 || defined(GENERATING_DOCUMENTATION) 191 typename Clock = boost::posix_time::ptime, 192 typename WaitTraits = time_traits<Clock> > 193 #else 194 typename Clock = chrono::steady_clock, 195 typename WaitTraits = wait_traits<Clock> > 196 #endif 197 class basic_socket_iostream; 198 199 #endif // !defined(BOOST_ASIO_BASIC_SOCKET_IOSTREAM_FWD_DECL) 200 201 namespace ip { 202 203 class address; 204 205 class address_v4; 206 207 class address_v6; 208 209 template <typename Address> 210 class basic_address_iterator; 211 212 typedef basic_address_iterator<address_v4> address_v4_iterator; 213 214 typedef basic_address_iterator<address_v6> address_v6_iterator; 215 216 template <typename Address> 217 class basic_address_range; 218 219 typedef basic_address_range<address_v4> address_v4_range; 220 221 typedef basic_address_range<address_v6> address_v6_range; 222 223 class network_v4; 224 225 class network_v6; 226 227 template <typename InternetProtocol> 228 class basic_endpoint; 229 230 template <typename InternetProtocol> 231 class basic_resolver_entry; 232 233 template <typename InternetProtocol> 234 class basic_resolver_results; 235 236 #if !defined(BOOST_ASIO_IP_BASIC_RESOLVER_FWD_DECL) 237 #define BOOST_ASIO_IP_BASIC_RESOLVER_FWD_DECL 238 239 template <typename InternetProtocol, typename Executor = any_io_executor> 240 class basic_resolver; 241 242 #endif // !defined(BOOST_ASIO_IP_BASIC_RESOLVER_FWD_DECL) 243 244 class tcp; 245 246 class udp; 247 248 } // namespace ip 249 } // namespace asio 250 } // namespace boost 251 252 #include <boost/asio/detail/pop_options.hpp> 253 254 #endif // !defined(GENERATING_DOCUMENTATION) 255 256 #endif // BOOST_ASIO_TS_NETFWD_HPP 257