HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
UT_BoostAsio.h
Go to the documentation of this file.
1 /*
2  * PROPRIETARY INFORMATION. This software is proprietary to
3  * Side Effects Software Inc., and is not to be reproduced,
4  * transmitted, or disclosed in any way without written permission.
5  *
6  * NAME: UT_BoostAsio.h
7  *
8  * COMMENTS:
9  *
10  */
11 
12 #ifndef __UT_BOOSTASIO_H__
13 #define __UT_BOOSTASIO_H__
14 
15 #include "UT_API.h"
16 
17 #include <SYS/SYS_Pragma.h>
18 
19 // Enable this if you need to track asio handlers.
20 #if UT_ASSERT_LEVEL > 0
21 //#define BOOST_ASIO_ENABLE_HANDLER_TRACKING
22 #endif
23 
24 // This is required for Windows. We are treating a warning that boost asio
25 // generates as an error which causes the build to fail.
28 
29 // Disable C++20 concepts in Boost Asio until we can fix the concept
30 // constraint errors in the NET library.
31 #define HBOOST_ASIO_DISABLE_CONCEPTS
32 
33 #include <hboost/asio.hpp>
34 
35 #undef HBOOST_ASIO_DISABLE_CONCEPTS
36 
38 
39 // This is a poor mans version of handler tracking. When boost gets bumped up
40 // to a version that has handler tracking swap this out for the boost asio
41 // handler tracking macros.
42 #ifdef BOOST_ASIO_ENABLE_HANDLER_TRACKING
43 #define ASIO_HANDLER_LOCATION \
44  UTdebugFormat("{}", __func__);
45 #else
46 #define ASIO_HANDLER_LOCATION
47 #endif
48 
49 // TCP type alias
50 using ASIO_TCPSocket = hboost::asio::ip::tcp::socket;
51 using ASIO_TCPEndpoint = hboost::asio::ip::tcp::endpoint;
52 using ASIO_TCPAcceptor = hboost::asio::ip::tcp::acceptor;
53 using ASIO_TCPResolver = hboost::asio::ip::tcp::resolver;
54 
55 // UDP type alias
56 using ASIO_UDPSocket = hboost::asio::ip::udp::socket;
57 using ASIO_UDPEndpoint = hboost::asio::ip::udp::endpoint;
58 using ASIO_UDPResolver = hboost::asio::ip::udp::resolver;
59 
60 // IP Address alias
61 using ASIO_IPAddress = hboost::asio::ip::address;
62 using ASIO_IPAddressV4 = hboost::asio::ip::address_v4;
63 using ASIO_IPAddressV6 = hboost::asio::ip::address_v6;
64 using ASIO_IPNetworkV4 = hboost::asio::ip::network_v4;
65 using ASIO_IPNetworkV6 = hboost::asio::ip::network_v6;
66 
67 // Buffers
68 using ASIO_ConstBuffer = hboost::asio::const_buffer;
69 using ASIO_MutableBuffer = hboost::asio::mutable_buffer;
70 using ASIO_StreamBuffer = hboost::asio::streambuf;
71 template <typename T, typename Allocator = std::allocator<T>>
72 using ASIO_DynamicVectorBuffer = hboost::asio::dynamic_vector_buffer<T, Allocator>;
73 
74 // Timers
75 using ASIO_DeadlineTimer = hboost::asio::deadline_timer;
76 using ASIO_SystemTimer = hboost::asio::system_timer;
77 using ASIO_SteadyTimer = hboost::asio::steady_timer;
78 
79 using ASIO_IOStrand = hboost::asio::io_context::strand;
80 
81 using ASIO_IOContext = hboost::asio::io_context;
82 template <typename ExecutorT>
83 using ASIO_ExecutorWorkGuard = hboost::asio::executor_work_guard<ExecutorT>;
84 
85 using ASIO_AnyExecutor = hboost::asio::any_io_executor;
86 
87 // Houdini Main IO context.
88 UT_API ASIO_IOContext::executor_type UThoudiniIOExecutor();
89 
90 // Extensions to the boost.asio library (i.e. sendfile support).
91 #include "UT_BoostAsioExt.h"
92 
93 #endif // __UT_BOOSTASIO_H__
94 
hboost::asio::ip::tcp::socket ASIO_TCPSocket
Definition: UT_BoostAsio.h:50
#define SYS_PRAGMA_PUSH_WARN()
Definition: SYS_Pragma.h:34
#define SYS_PRAGMA_DISABLE_OVERLOADED_VIRTUAL()
Definition: SYS_Pragma.h:65
hboost::asio::const_buffer ASIO_ConstBuffer
Definition: UT_BoostAsio.h:68
hboost::asio::mutable_buffer ASIO_MutableBuffer
Definition: UT_BoostAsio.h:69
hboost::asio::ip::udp::socket ASIO_UDPSocket
Definition: UT_BoostAsio.h:56
#define UT_API
Definition: UT_API.h:14
hboost::asio::ip::address_v4 ASIO_IPAddressV4
Definition: UT_BoostAsio.h:62
hboost::asio::deadline_timer ASIO_DeadlineTimer
Definition: UT_BoostAsio.h:75
hboost::asio::ip::network_v6 ASIO_IPNetworkV6
Definition: UT_BoostAsio.h:65
hboost::asio::ip::network_v4 ASIO_IPNetworkV4
Definition: UT_BoostAsio.h:64
hboost::asio::ip::udp::resolver ASIO_UDPResolver
Definition: UT_BoostAsio.h:58
hboost::asio::dynamic_vector_buffer< T, Allocator > ASIO_DynamicVectorBuffer
Definition: UT_BoostAsio.h:72
hboost::asio::executor_work_guard< ExecutorT > ASIO_ExecutorWorkGuard
Definition: UT_BoostAsio.h:83
hboost::asio::ip::udp::endpoint ASIO_UDPEndpoint
Definition: UT_BoostAsio.h:57
#define SYS_PRAGMA_POP_WARN()
Definition: SYS_Pragma.h:35
UT_API ASIO_IOContext::executor_type UThoudiniIOExecutor()
hboost::asio::io_context ASIO_IOContext
Definition: UT_BoostAsio.h:81
hboost::asio::ip::address_v6 ASIO_IPAddressV6
Definition: UT_BoostAsio.h:63
hboost::asio::ip::tcp::endpoint ASIO_TCPEndpoint
Definition: UT_BoostAsio.h:51
hboost::asio::system_timer ASIO_SystemTimer
Definition: UT_BoostAsio.h:76
hboost::asio::ip::tcp::acceptor ASIO_TCPAcceptor
Definition: UT_BoostAsio.h:52
hboost::asio::ip::tcp::resolver ASIO_TCPResolver
Definition: UT_BoostAsio.h:53
hboost::asio::streambuf ASIO_StreamBuffer
Definition: UT_BoostAsio.h:70
hboost::asio::ip::address ASIO_IPAddress
Definition: UT_BoostAsio.h:61
hboost::asio::io_context::strand ASIO_IOStrand
Definition: UT_BoostAsio.h:79
hboost::asio::any_io_executor ASIO_AnyExecutor
Definition: UT_BoostAsio.h:85
hboost::asio::steady_timer ASIO_SteadyTimer
Definition: UT_BoostAsio.h:77