Clementine
netfwd.hpp
1 //
2 // ts/netfwd.hpp
3 // ~~~~~~~~~~~~~
4 //
5 // Copyright (c) 2003-2020 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 ASIO_TS_NETFWD_HPP
12 #define 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 "asio/detail/config.hpp"
19 
20 #if defined(ASIO_HAS_CHRONO)
21 # include "asio/detail/chrono.hpp"
22 #endif // defined(ASIO_HAS_CHRONO)
23 
24 #if defined(ASIO_HAS_BOOST_DATE_TIME)
25 # include "asio/detail/date_time_fwd.hpp"
26 #endif // defined(ASIO_HAS_BOOST_DATE_TIME)
27 
28 #if !defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT)
29 #include "asio/execution/blocking.hpp"
30 #include "asio/execution/outstanding_work.hpp"
31 #include "asio/execution/relationship.hpp"
32 #endif // !defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT)
33 
34 #if !defined(GENERATING_DOCUMENTATION)
35 
36 #include "asio/detail/push_options.hpp"
37 
38 namespace asio {
39 
40 class execution_context;
41 
42 template <typename T, typename Executor>
43 class executor_binder;
44 
45 #if !defined(ASIO_EXECUTOR_WORK_GUARD_DECL)
46 #define ASIO_EXECUTOR_WORK_GUARD_DECL
47 
48 template <typename Executor, typename = void>
49 class executor_work_guard;
50 
51 #endif // !defined(ASIO_EXECUTOR_WORK_GUARD_DECL)
52 
53 template <typename Blocking, typename Relationship, typename Allocator>
54 class basic_system_executor;
55 
56 #if defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT)
57 
58 class executor;
59 
60 typedef executor any_io_executor;
61 
62 #else // defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT)
63 
64 namespace execution {
65 
66 #if !defined(ASIO_EXECUTION_ANY_EXECUTOR_FWD_DECL)
67 #define ASIO_EXECUTION_ANY_EXECUTOR_FWD_DECL
68 
69 #if defined(ASIO_HAS_VARIADIC_TEMPLATES)
70 
71 template <typename... SupportableProperties>
72 class any_executor;
73 
74 #else // defined(ASIO_HAS_VARIADIC_TEMPLATES)
75 
76 template <typename = void, typename = void, typename = void,
77  typename = void, typename = void, typename = void,
78  typename = void, typename = void, typename = void>
79 class any_executor;
80 
81 #endif // defined(ASIO_HAS_VARIADIC_TEMPLATES)
82 
83 #endif // !defined(ASIO_EXECUTION_ANY_EXECUTOR_FWD_DECL)
84 
85 template <typename U>
86 struct context_as_t;
87 
88 template <typename Property>
89 struct prefer_only;
90 
91 } // namespace execution
92 
95  execution::blocking_t::never_t,
101  > any_io_executor;
102 
103 #endif // defined(ASIO_USE_TS_EXECUTOR_AS_DEFAULT)
104 
105 template <typename Executor>
106 class strand;
107 
108 class io_context;
109 
110 template <typename Clock>
111 struct wait_traits;
112 
113 #if defined(ASIO_HAS_BOOST_DATE_TIME)
114 
115 template <typename Time>
116 struct time_traits;
117 
118 #endif // defined(ASIO_HAS_BOOST_DATE_TIME)
119 
120 #if !defined(ASIO_BASIC_WAITABLE_TIMER_FWD_DECL)
121 #define ASIO_BASIC_WAITABLE_TIMER_FWD_DECL
122 
123 template <typename Clock,
124  typename WaitTraits = wait_traits<Clock>,
125  typename Executor = any_io_executor>
127 
128 #endif // !defined(ASIO_BASIC_WAITABLE_TIMER_FWD_DECL)
129 
130 #if defined(ASIO_HAS_CHRONO)
131 
132 typedef basic_waitable_timer<chrono::system_clock> system_timer;
133 
134 typedef basic_waitable_timer<chrono::steady_clock> steady_timer;
135 
137  high_resolution_timer;
138 
139 #endif // defined(ASIO_HAS_CHRONO)
140 
141 #if !defined(ASIO_BASIC_SOCKET_FWD_DECL)
142 #define ASIO_BASIC_SOCKET_FWD_DECL
143 
144 template <typename Protocol, typename Executor = any_io_executor>
145 class basic_socket;
146 
147 #endif // !defined(ASIO_BASIC_SOCKET_FWD_DECL)
148 
149 #if !defined(ASIO_BASIC_DATAGRAM_SOCKET_FWD_DECL)
150 #define ASIO_BASIC_DATAGRAM_SOCKET_FWD_DECL
151 
152 template <typename Protocol, typename Executor = any_io_executor>
154 
155 #endif // !defined(ASIO_BASIC_DATAGRAM_SOCKET_FWD_DECL)
156 
157 #if !defined(ASIO_BASIC_STREAM_SOCKET_FWD_DECL)
158 #define ASIO_BASIC_STREAM_SOCKET_FWD_DECL
159 
160 // Forward declaration with defaulted arguments.
161 template <typename Protocol, typename Executor = any_io_executor>
162 class basic_stream_socket;
163 
164 #endif // !defined(ASIO_BASIC_STREAM_SOCKET_FWD_DECL)
165 
166 #if !defined(ASIO_BASIC_SOCKET_ACCEPTOR_FWD_DECL)
167 #define ASIO_BASIC_SOCKET_ACCEPTOR_FWD_DECL
168 
169 template <typename Protocol, typename Executor = any_io_executor>
171 
172 #endif // !defined(ASIO_BASIC_SOCKET_ACCEPTOR_FWD_DECL)
173 
174 #if !defined(ASIO_BASIC_SOCKET_STREAMBUF_FWD_DECL)
175 #define ASIO_BASIC_SOCKET_STREAMBUF_FWD_DECL
176 
177 // Forward declaration with defaulted arguments.
178 template <typename Protocol,
179 #if defined(ASIO_HAS_BOOST_DATE_TIME) \
180  || defined(GENERATING_DOCUMENTATION)
181  typename Clock = boost::posix_time::ptime,
182  typename WaitTraits = time_traits<Clock> >
183 #else
184  typename Clock = chrono::steady_clock,
185  typename WaitTraits = wait_traits<Clock> >
186 #endif
188 
189 #endif // !defined(ASIO_BASIC_SOCKET_STREAMBUF_FWD_DECL)
190 
191 #if !defined(ASIO_BASIC_SOCKET_IOSTREAM_FWD_DECL)
192 #define ASIO_BASIC_SOCKET_IOSTREAM_FWD_DECL
193 
194 // Forward declaration with defaulted arguments.
195 template <typename Protocol,
196 #if defined(ASIO_HAS_BOOST_DATE_TIME) \
197  || defined(GENERATING_DOCUMENTATION)
198  typename Clock = boost::posix_time::ptime,
199  typename WaitTraits = time_traits<Clock> >
200 #else
201  typename Clock = chrono::steady_clock,
202  typename WaitTraits = wait_traits<Clock> >
203 #endif
205 
206 #endif // !defined(ASIO_BASIC_SOCKET_IOSTREAM_FWD_DECL)
207 
208 namespace ip {
209 
210 class address;
211 
212 class address_v4;
213 
214 class address_v6;
215 
216 template <typename Address>
217 class basic_address_iterator;
218 
219 typedef basic_address_iterator<address_v4> address_v4_iterator;
220 
221 typedef basic_address_iterator<address_v6> address_v6_iterator;
222 
223 template <typename Address>
224 class basic_address_range;
225 
226 typedef basic_address_range<address_v4> address_v4_range;
227 
228 typedef basic_address_range<address_v6> address_v6_range;
229 
230 class network_v4;
231 
232 class network_v6;
233 
234 template <typename InternetProtocol>
235 class basic_endpoint;
236 
237 template <typename InternetProtocol>
238 class basic_resolver_entry;
239 
240 template <typename InternetProtocol>
241 class basic_resolver_results;
242 
243 #if !defined(ASIO_IP_BASIC_RESOLVER_FWD_DECL)
244 #define ASIO_IP_BASIC_RESOLVER_FWD_DECL
245 
246 template <typename InternetProtocol, typename Executor = any_io_executor>
247 class basic_resolver;
248 
249 #endif // !defined(ASIO_IP_BASIC_RESOLVER_FWD_DECL)
250 
251 class tcp;
252 
253 class udp;
254 
255 } // namespace ip
256 } // namespace asio
257 
258 #include "asio/detail/pop_options.hpp"
259 
260 #endif // !defined(GENERATING_DOCUMENTATION)
261 
262 #endif // ASIO_TS_NETFWD_HPP
Iostream interface for a socket.
Definition: basic_socket_iostream.hpp:128
Definition: prefer_only.hpp:187
Provides stream-oriented socket functionality.
Definition: basic_stream_socket.hpp:36
Definition: bulk_execute.cpp:152
Provides the ability to accept new connections.
Definition: basic_socket_acceptor.hpp:51
Provides datagram-oriented socket functionality.
Definition: basic_datagram_socket.hpp:36
Definition: handler_work.hpp:46
Wait traits suitable for use with the basic_waitable_timer class template.
Definition: netfwd.hpp:111
Definition: any_executor.hpp:240
Definition: handler_work.hpp:37
Provides socket functionality.
Definition: basic_socket.hpp:52
Provides waitable timer functionality.
Definition: basic_waitable_timer.hpp:45
Iostream streambuf for a socket.
Definition: basic_socket_streambuf.hpp:126
Definition: any_io_executor.hpp:28