SRS-control
0.1.4
Loading...
Searching...
No Matches
main.cpp
Go to the documentation of this file.
1
#include <boost/asio.hpp>
2
#include <
srs/format.hpp
>
3
#include <
srs/srs.hpp
>
4
5
constexpr
auto
PORT
=
"11111"
;
6
constexpr
auto
IP_ADDR
=
"localhost"
;
7
constexpr
auto
INPUT_BUFFER_SIZE
= 10000;
8
namespace
asio = boost::asio;
9
using
udp
= asio::ip::udp;
10
11
namespace
12
{
13
auto
create_socket_from_ip_port(asio::io_context& context,
const
std::string& ip_addr,
const
std::string& port)
14
{
15
auto
resolver = udp::resolver{ context };
16
auto
udp_endpoints = resolver.resolve(udp::v4(), ip_addr, port);
17
auto
endpoint = *udp_endpoints.begin();
18
return
udp::socket{ context, endpoint };
19
}
20
21
}
// namespace
22
23
class
MsgReceiver
24
{
25
public
:
26
explicit
MsgReceiver
(udp::socket socket)
27
:
socket_
{ std::move(socket) }
28
{
29
}
30
31
void
listen
()
32
{
33
socket_
.async_receive(asio::buffer(
msg_buffer_
),
34
[
this
](
auto
error_code,
auto
byte_read)
35
{
36
auto
msg = std::string_view{
msg_buffer_
.data(), byte_read };
37
if
(!error_code)
38
{
39
const
auto
& struct_data =
msg_reader_
.convert(msg);
40
fmt::print(
"{}\n"
, struct_data);
41
}
42
listen
();
43
});
44
}
45
46
private
:
47
udp::socket
socket_
;
48
std::array<char, INPUT_BUFFER_SIZE>
msg_buffer_
{};
49
srs::ProtoMsgReader
msg_reader_
;
50
};
51
52
auto
main
() ->
int
53
{
54
auto
io_context = asio::io_context{};
55
56
auto
msg_receiver =
MsgReceiver
{ create_socket_from_ip_port(io_context,
IP_ADDR
,
PORT
) };
57
msg_receiver.
listen
();
58
io_context.run();
59
60
return
0;
61
}
MsgReceiver
Definition
main.cpp:24
MsgReceiver::socket_
udp::socket socket_
Definition
main.cpp:47
MsgReceiver::msg_reader_
srs::ProtoMsgReader msg_reader_
Definition
main.cpp:49
MsgReceiver::listen
void listen()
Definition
main.cpp:31
MsgReceiver::MsgReceiver
MsgReceiver(udp::socket socket)
Definition
main.cpp:26
MsgReceiver::msg_buffer_
std::array< char, INPUT_BUFFER_SIZE > msg_buffer_
Definition
main.cpp:48
main
auto main() -> int
Definition
main.cpp:52
PORT
constexpr auto PORT
Definition
main.cpp:5
udp
asio::ip::udp udp
Definition
main.cpp:9
IP_ADDR
constexpr auto IP_ADDR
Definition
main.cpp:6
INPUT_BUFFER_SIZE
constexpr auto INPUT_BUFFER_SIZE
Definition
main.cpp:7
format.hpp
srs::ProtoMsgReader
reader::ProtoMsg ProtoMsgReader
Definition
srs.hpp:9
srs.hpp
examples
readUDP
main.cpp
Impressum
Datenschutzerklärung
Generated by
1.14.0