GKD.RoboCtrl
载入中...
搜索中...
未找到
udp.cpp
1
#include "
io/udp.h
"
2
#include "
core/async.hpp
"
3
#include "
io/base.hpp
"
4
5
using namespace
roboctrl::io;
6
7
udp::udp
(
info_type
info)
8
:
bare_io_base
{},
9
socket_{roboctrl::
executor
()},
10
info_{info}
11
{
12
auto
endpoint
= asio::ip::udp::endpoint(asio::ip::make_address(info.address),info.port);
13
socket_.connect(
endpoint
);
14
15
roboctrl::spawn
(
task
());
16
}
17
18
roboctrl::awaitable<void>
udp::send
(
byte_span
data)
19
{
20
co_await
socket_.async_send(asio::buffer(data),asio::use_awaitable);
21
}
22
23
roboctrl::awaitable<void>
udp::task
()
24
{
25
while
(
true
){
26
auto
bytes
=
co_await
socket_.async_receive(asio::buffer(buffer_),asio::use_awaitable);
27
dispatch
(
byte_span
{buffer_.data(),
bytes
});
28
}
29
}
async.hpp
异步任务上下文组件。
roboctrl::io::bare_io_base
裸IO组件。
Definition
base.hpp:65
roboctrl::io::bare_io_base::dispatch
void dispatch(byte_span bytes)
分发收到的字节流。
Definition
base.hpp:103
roboctrl::io::udp::task
awaitable< void > task()
接收循环任务。
Definition
udp.cpp:23
roboctrl::io::udp::send
awaitable< void > send(byte_span data)
异步发送一段字节数据。
Definition
udp.cpp:18
roboctrl::io::udp::udp
udp(info_type info)
构造并连接到指定远端。
Definition
udp.cpp:7
base.hpp
IO的基础组件。
roboctrl::io::byte_span
std::span< std::byte > byte_span
byte span,实际上就是一个std::span<std::byte>;
Definition
base.hpp:42
roboctrl::async::spawn
auto spawn(task_context::task_type &&task)
添加一个协程任务到全局任务上下文中执行。
Definition
async.hpp:151
roboctrl::async::awaitable
asio::awaitable< T > awaitable
协程任务类型。
Definition
async.hpp:42
roboctrl::async::executor
auto executor()
获取全局任务上下文的executor。
Definition
async.hpp:211
roboctrl::io::udp::info_type
UDP 初始化参数。
Definition
udp.h:26
udp.h
UDP 裸 IO 封装。
io
udp.cpp
制作者
1.9.8