OSSIA
Open Scenario System for Interactive Application
Loading...
Searching...
No Matches
resolve_transport.hpp
1#pragma once
2#include <ossia/network/resolve.hpp>
3#include <ossia/network/sockets/configuration.hpp>
4
5#include <boost/asio/ip/tcp.hpp>
6#include <boost/asio/ip/udp.hpp>
7
8namespace ossia
9{
10
11inline void resolve_host_in_transport(auto& conf)
12{
13 struct
14 {
15 using ret = void;
16 ret operator()(ossia::net::udp_configuration& conf)
17 {
18 if(conf.remote)
19 {
20 auto& p = *conf.remote;
21 if(auto res
22 = resolve_sync_v4<boost::asio::ip::udp>(p.host, std::to_string(p.port)))
23 conf.remote->host = res->host;
24 }
25 }
26 void operator()(ossia::net::unix_dgram_configuration& conf) { }
27 void operator()(ossia::net::unix_stream_configuration& conf) { }
28 void operator()(ossia::net::serial_configuration& conf) { }
29 void operator()(ossia::net::tcp_server_configuration& conf) { }
30 void operator()(ossia::net::ws_server_configuration& conf) { }
31 void operator()(ossia::net::tcp_client_configuration& conf)
32 {
33 auto& p = conf;
34 if(auto res
35 = resolve_sync_v4<boost::asio::ip::tcp>(p.host, std::to_string(p.port)))
36 conf.host = res->host;
37 }
38 void operator()(ossia::net::ws_client_configuration& conf)
39 {
40 // not necessary as the ws library already does resolving
41 }
42 } vis;
43
44 ossia::visit(vis, conf);
45}
46}
Definition git_info.h:7