| line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
|
1
|
|
|
|
|
|
|
#include "Message.h" |
|
2
|
|
|
|
|
|
|
#include |
|
3
|
|
|
|
|
|
|
|
|
4
|
|
|
|
|
|
|
namespace panda { namespace protocol { namespace websocket { |
|
5
|
|
|
|
|
|
|
|
|
6
|
348
|
|
|
|
|
|
bool Message::add_frame (const Frame& frame) { |
|
7
|
348
|
50
|
|
|
|
|
assert(_state != State::DONE); |
|
8
|
|
|
|
|
|
|
|
|
9
|
348
|
100
|
|
|
|
|
if (frame.error) { |
|
10
|
24
|
|
|
|
|
|
error = frame.error; |
|
11
|
24
|
|
|
|
|
|
_state = State::DONE; |
|
12
|
24
|
|
|
|
|
|
return true; |
|
13
|
|
|
|
|
|
|
} |
|
14
|
|
|
|
|
|
|
|
|
15
|
324
|
100
|
|
|
|
|
if (!frame_count++) { |
|
16
|
194
|
|
|
|
|
|
_opcode = frame.opcode(); |
|
17
|
194
|
100
|
|
|
|
|
if (_opcode == Opcode::CLOSE) { |
|
18
|
6
|
|
|
|
|
|
_close_code = frame.close_code(); |
|
19
|
6
|
50
|
|
|
|
|
_close_message = frame.close_message(); |
|
20
|
|
|
|
|
|
|
} |
|
21
|
|
|
|
|
|
|
} |
|
22
|
|
|
|
|
|
|
|
|
23
|
324
|
100
|
|
|
|
|
if (_max_size && _payload_length + frame.payload_length() > _max_size) { |
|
|
|
100
|
|
|
|
|
|
|
|
|
100
|
|
|
|
|
|
|
24
|
2
|
|
|
|
|
|
error = errc::max_message_size; |
|
25
|
2
|
|
|
|
|
|
_state = State::DONE; |
|
26
|
2
|
|
|
|
|
|
return true; |
|
27
|
|
|
|
|
|
|
} |
|
28
|
|
|
|
|
|
|
|
|
29
|
2614
|
100
|
|
|
|
|
for (const auto& s : frame.payload) { |
|
30
|
2292
|
|
|
|
|
|
_payload_length += s.length(); |
|
31
|
2292
|
50
|
|
|
|
|
payload.push_back(s); |
|
32
|
|
|
|
|
|
|
} |
|
33
|
|
|
|
|
|
|
|
|
34
|
322
|
100
|
|
|
|
|
if (frame.final()) _state = State::DONE; |
|
35
|
|
|
|
|
|
|
|
|
36
|
348
|
|
|
|
|
|
return _state == State::DONE; |
|
37
|
|
|
|
|
|
|
} |
|
38
|
|
|
|
|
|
|
|
|
39
|
|
|
|
|
|
|
}}} |