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