MCPcopy Create free account
hub / github.com/MonaSolutions/MonaServer / decoding

Method decoding

MonaCore/sources/WebSocket/WSDecoder.cpp:27–61  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

25namespace Mona {
26
27UInt32 WSDecoder::decoding(Exception& ex, UInt8* data,UInt32 size) {
28 BinaryReader reader(data, size);
29
30 if (reader.available()<2)
31 return 0;
32
33 UInt8 type = reader.read8() & 0x0F;
34 UInt8 lengthByte = reader.read8();
35
36 size=lengthByte&0x7f;
37 if (size==127) {
38 if (reader.available()<8)
39 return 0;
40 size = (UInt32)reader.read64();
41 } else if (size==126) {
42 if (reader.available()<2)
43 return 0;
44 size = reader.read16();
45 }
46
47 if(lengthByte&0x80)
48 size += 4;
49
50 if (reader.available()<size)
51 return 0;
52
53 reader.shrink(size);
54
55 if (lengthByte & 0x80)
56 WS::Unmask(reader);
57
58 receive(reader.current(),reader.available(),type);
59
60 return reader.position()+reader.available();
61}
62
63} // namespace Mona

Callers

nothing calls this directly

Calls 7

read8Method · 0.80
read64Method · 0.80
read16Method · 0.80
shrinkMethod · 0.80
positionMethod · 0.80
availableMethod · 0.45
currentMethod · 0.45

Tested by

no test coverage detected