MCPcopy Create free account
hub / github.com/Pagghiu/SaneCppLibraries / datagramServer

Function datagramServer

Examples/AwaitDatagramPing/AwaitDatagramPing.cpp:42–63  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

40}
41
42static AwaitTask datagramServer(AwaitEventLoop& await, const SocketDescriptor& server)
43{
44 char requestBuffer[64] = {};
45 AwaitSocketReceiveFromResult request;
46 SC_CO_TRY(co_await await.receiveFrom(server, {requestBuffer, sizeof(requestBuffer)}, request));
47
48 StringView requestText({request.data.data(), request.data.sizeInBytes()}, false, StringEncoding::Ascii);
49 if (requestText != "ping await udp")
50 {
51 co_return Result::Error("AwaitDatagramPing server received an unexpected request");
52 }
53
54 const char reply[] = "pong await udp";
55 AwaitSocketSendResult sendResult;
56 SC_CO_TRY(co_await await.sendTo(server, request.sourceAddress, {reply, sizeof(reply) - 1}, &sendResult));
57 if (sendResult.numBytes != sizeof(reply) - 1)
58 {
59 co_return Result::Error("AwaitDatagramPing server sent a partial reply");
60 }
61
62 co_return Result(true);
63}
64
65static AwaitTask datagramClient(AwaitEventLoop& await, const SocketDescriptor& client, SocketIPAddress serverAddress,
66 Span<char> replyBuffer, AwaitSocketReceiveFromResult& reply)

Callers 1

datagramConversationFunction · 0.85

Calls 6

receiveFromMethod · 0.80
sendToMethod · 0.80
ErrorEnum · 0.50
ResultClass · 0.50
dataMethod · 0.45
sizeInBytesMethod · 0.45

Tested by

no test coverage detected