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