| 949 | } |
| 950 | |
| 951 | Result HttpWebSocketMessageAssembler::onFrameHeader(const HttpWebSocketFrameHeaderView& header) |
| 952 | { |
| 953 | currentFrame = header; |
| 954 | ignoringFrame = header.isControlFrame(); |
| 955 | if (ignoringFrame) |
| 956 | { |
| 957 | return Result(true); |
| 958 | } |
| 959 | |
| 960 | if (header.opcode == HttpWebSocketOpcode::Continuation) |
| 961 | { |
| 962 | SC_TRY_MSG(assemblingMessage, "HttpWebSocketMessageAssembler unexpected continuation"); |
| 963 | } |
| 964 | else |
| 965 | { |
| 966 | SC_TRY_MSG(not assemblingMessage, "HttpWebSocketMessageAssembler new message before final continuation"); |
| 967 | messageOpcode = header.opcode; |
| 968 | messageSize = 0; |
| 969 | assemblingMessage = true; |
| 970 | } |
| 971 | |
| 972 | if (header.payloadLength == 0 and header.fin) |
| 973 | { |
| 974 | if (onMessage.isValid()) |
| 975 | { |
| 976 | SC_TRY(onMessage(messageOpcode, {messageStorage.data(), messageSize})); |
| 977 | } |
| 978 | assemblingMessage = false; |
| 979 | messageSize = 0; |
| 980 | } |
| 981 | return Result(true); |
| 982 | } |
| 983 | |
| 984 | Result HttpWebSocketMessageAssembler::onFramePayload(Span<char> payload, bool frameFinished) |
| 985 | { |
nothing calls this directly
no test coverage detected