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

Method sendFrame

Libraries/Http/HttpWebSocket.cpp:1064–1085  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1062}
1063
1064Result HttpWebSocketEndpoint::sendFrame(const HttpWebSocketFrameHeaderView& header, Span<const char> payload,
1065 Span<char> storage, Span<const char>& encodedFrame)
1066{
1067 SC_TRY_MSG(header.payloadLength == payload.sizeInBytes(),
1068 "HttpWebSocketEndpoint payload does not match frame length");
1069
1070 Span<const char> encodedHeader;
1071 SC_TRY(writer.beginFrame(header, storage, encodedHeader));
1072 SC_TRY_MSG(storage.sizeInBytes() >= encodedHeader.sizeInBytes() + payload.sizeInBytes(),
1073 "HttpWebSocketEndpoint frame storage too small");
1074
1075 if (payload.sizeInBytes() > 0)
1076 {
1077 Span<char> destinationPayload = {storage.data() + encodedHeader.sizeInBytes(), payload.sizeInBytes()};
1078 ::memcpy(destinationPayload.data(), payload.data(), payload.sizeInBytes());
1079 SC_TRY(writer.writePayload(destinationPayload));
1080 }
1081 SC_TRY(writer.finishFrame());
1082
1083 encodedFrame = {storage.data(), encodedHeader.sizeInBytes() + payload.sizeInBytes()};
1084 return Result(true);
1085}
1086
1087Result HttpWebSocketEndpoint::sendData(HttpWebSocketOpcode opcode, Span<const char> payload, bool fin,
1088 const uint8_t* maskKey, Span<char> storage, Span<const char>& encodedFrame)

Callers

nothing calls this directly

Calls 6

beginFrameMethod · 0.80
writePayloadMethod · 0.80
finishFrameMethod · 0.80
ResultClass · 0.50
sizeInBytesMethod · 0.45
dataMethod · 0.45

Tested by

no test coverage detected