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

Function encodeFrame

Tests/Libraries/Http/HttpWebSocketFrameTest.cpp:62–83  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

60};
61
62static SC::Result encodeFrame(SC::HttpWebSocketFrameWriter& writer, const SC::HttpWebSocketFrameHeaderView& header,
63 SC::Span<char> payload, SC::Span<char> outputStorage, size_t& outputBytes)
64{
65 SC::Span<const char> encodedHeader;
66 SC_TRY(writer.beginFrame(header, outputStorage, encodedHeader));
67 SC_TRY_MSG(outputStorage.sizeInBytes() >= encodedHeader.sizeInBytes() + payload.sizeInBytes(),
68 "encodeFrame output storage too small");
69
70 if (payload.sizeInBytes() > 0)
71 {
72 SC::Span<char> destinationPayload = {outputStorage.data() + encodedHeader.sizeInBytes(), payload.sizeInBytes()};
73 for (size_t idx = 0; idx < payload.sizeInBytes(); ++idx)
74 {
75 destinationPayload[idx] = payload[idx];
76 }
77 SC_TRY(writer.writePayload(destinationPayload));
78 }
79
80 SC_TRY(writer.finishFrame());
81 outputBytes = encodedHeader.sizeInBytes() + payload.sizeInBytes();
82 return SC::Result(true);
83}
84
85static SC::Result parseFrameInChunks(SC::HttpWebSocketFrameReader& reader, SC::Span<char> encoded,
86 const size_t* chunkSizes, size_t numChunkSizes)

Callers 6

unmaskedServerFramesMethod · 0.85
maskedClientFramesMethod · 0.85
controlFramesMethod · 0.85
maskingRoleValidationMethod · 0.85

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