MCPcopy Create free account
hub / github.com/Snapchat/Valdi / read

Method read

valdi_core/src/valdi_core/cpp/Resources/ValdiPacket.cpp:32–53  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

30}
31
32Result<BytesView> ValdiPacket::read(const Byte* data, size_t size) {
33 const auto* dataEnd = data + size;
34 auto parser = Parser(data, dataEnd);
35
36 auto moduleHeaderResult = parser.parseStruct<ValdiPacketHeader>();
37 if (!moduleHeaderResult) {
38 return ValdiPacket::incompletePacketError();
39 }
40
41 const auto& moduleHeader = moduleHeaderResult.value();
42 if (moduleHeader->magic != kValdiMagic) {
43 return Error(STRING_FORMAT("magic is incorrect, expected {} got {}", kValdiMagic, moduleHeader->magic));
44 }
45
46 auto expectedLen = static_cast<size_t>(moduleHeader->totalDataLength);
47 const auto* expectedEndPtr = parser.getCurrent() + expectedLen;
48 if (expectedEndPtr > dataEnd) {
49 return ValdiPacket::incompletePacketError();
50 }
51
52 return BytesView(nullptr, parser.getCurrent(), expectedLen);
53}
54
55size_t ValdiPacket::write(const Byte* data, size_t size, ByteBuffer& out) {
56 ValdiPacketHeader header;

Callers

nothing calls this directly

Calls 12

valueMethod · 0.65
appendMethod · 0.65
endMethod · 0.65
ParserClass · 0.50
ErrorClass · 0.50
BytesViewClass · 0.50
getCurrentMethod · 0.45
sizeMethod · 0.45
dataMethod · 0.45
beginMethod · 0.45
shiftMethod · 0.45
toBytesViewMethod · 0.45

Tested by

no test coverage detected