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

Method attach

Libraries/Http/HttpWebSocket.cpp:1279–1315  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1277 Span<const char> encodedHeader;
1278 SC_TRY(writer.beginFrame(header, storage, encodedHeader));
1279 SC_TRY_MSG(storage.sizeInBytes() >= encodedHeader.sizeInBytes() + payload.sizeInBytes(),
1280 "HttpWebSocketEndpoint frame storage too small");
1281
1282 if (payload.sizeInBytes() > 0)
1283 {
1284 Span<char> destinationPayload = {storage.data() + encodedHeader.sizeInBytes(), payload.sizeInBytes()};
1285 ::memcpy(destinationPayload.data(), payload.data(), payload.sizeInBytes());
1286 SC_TRY(writer.writePayload(destinationPayload));
1287 }
1288 SC_TRY(writer.finishFrame());
1289
1290 encodedFrame = {storage.data(), encodedHeader.sizeInBytes() + payload.sizeInBytes()};
1291 return Result(true);
1292}
1293
1294Result HttpWebSocketEndpoint::sendData(HttpWebSocketOpcode opcode, Span<const char> payload, bool fin,
1295 const uint8_t* maskKey, Span<char> storage, Span<const char>& encodedFrame)
1296{
1297 SC_TRY_MSG(opcode == HttpWebSocketOpcode::Text or opcode == HttpWebSocketOpcode::Binary or
1298 opcode == HttpWebSocketOpcode::Continuation,
1299 "HttpWebSocketEndpoint sendData requires a data opcode");
1300 HttpWebSocketFrameHeaderView header;
1301 header.opcode = opcode;
1302 header.fin = fin;
1303 header.payloadLength = payload.sizeInBytes();
1304 SC_TRY(applyOutgoingMask(header, maskKey));
1305 return sendFrame(header, payload, storage, encodedFrame);
1306}
1307
1308Result HttpWebSocketEndpoint::sendPing(Span<const char> payload, const uint8_t* maskKey, Span<char> storage,
1309 Span<const char>& encodedFrame)
1310{
1311 SC_TRY_MSG(payload.sizeInBytes() <= sizeof(controlPayload), "HttpWebSocketEndpoint ping payload too large");
1312 HttpWebSocketFrameHeaderView header;
1313 header.opcode = HttpWebSocketOpcode::Ping;
1314 header.fin = true;
1315 header.payloadLength = payload.sizeInBytes();
1316 SC_TRY(applyOutgoingMask(header, maskKey));
1317 return sendFrame(header, payload, storage, encodedFrame);
1318}

Callers 2

Calls 5

detachFunction · 0.85
ErrorEnum · 0.50
ResultClass · 0.50
isValidMethod · 0.45
resetMethod · 0.45

Tested by

no test coverage detected