| 250 | } |
| 251 | |
| 252 | bool DaemonClient::consumeBufferedData() { |
| 253 | Result<BytesView> result; |
| 254 | { |
| 255 | std::lock_guard<Mutex> lock(_mutex); |
| 256 | result = _packetStream.read(); |
| 257 | } |
| 258 | |
| 259 | if (!result) { |
| 260 | if (result.error() == ValdiPacket::incompletePacketError()) { |
| 261 | return false; |
| 262 | } |
| 263 | |
| 264 | // Something bad happened, closing connection |
| 265 | VALDI_ERROR(*_logger, "Received invalid packet: {}, disconnecting daemon client...", result.error()); |
| 266 | closeClient(result.error()); |
| 267 | return false; |
| 268 | } |
| 269 | |
| 270 | auto payloadData = result.moveValue(); |
| 271 | |
| 272 | auto payload = jsonToValue(payloadData.data(), payloadData.size()); |
| 273 | if (payload) { |
| 274 | processPayload(payload.value()); |
| 275 | } else { |
| 276 | VALDI_ERROR(*_logger, "Failed to parse packet: {}", payload.error()); |
| 277 | } |
| 278 | |
| 279 | return true; |
| 280 | } |
| 281 | |
| 282 | void DaemonClient::sendJsDebuggerInfo(uint16_t port, const std::vector<StringBox>& websocketTargets) { |
| 283 | auto targets = ValueArray::make(websocketTargets.size()); |