- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
/**
* @throw std::system_error
*/
auto udp_echo_service(int64_t sd) -> no_return_t {
sockaddr_in remote{};
io_work_t work{};
io_buffer_t buf{}; // memory view to the 'storage'
io_buffer_reserved_t storage{}; // each coroutine frame contains buffer
while (true) {
// packet length(read)
auto len = co_await recv_from(sd, remote, buf = storage, work);
// instead of length check, see the error from the 'io_work_t' object
if (work.error())
goto OnError;
buf = {storage.data(), static_cast<size_t>(len)};
len = co_await send_to(sd, remote, buf, work);
if (work.error())
goto OnError;
assert(len == buf.size_bytes());
}
co_return;
OnError:
// expect ERROR_OPERATION_ABORTED (the socket is closed in this case)
const auto ec = work.error();
const auto emsg = system_category().message(ec);
fputs(emsg.c_str(), stderr);
}
https://github.com/luncliff/coroutine/blob/main/test/net_socket_udp_echo.cpp
guest6 08.06.2022 09:38 # 0
guest6 08.06.2022 20:56 # 0
ко ко ко рутины это кру кру круто!!!
недавно пытался жабоёба перевести на корутины кокококотлина
но жабоёб всё равно пишет лапшу, и течёт
максимум он может во фьючу
Всё таки С++ это современный и удобный язык для программистов, а не говно для домохозяек, как все другие языки
kcalbCube 09.06.2022 06:03 # 0
kcalbCube 29.06.2022 09:26 # 0
j123123 09.06.2022 16:47 # 0
https://govnokod.ru/26982#comment579234
guest6 09.06.2022 16:49 # 0
j123123 09.06.2022 16:51 # 0
kcalbCube 10.06.2022 10:10 # 0
kcalbCube 29.06.2022 09:26 # 0