MCPcopy Create free account
hub / github.com/dfranx/SHADERed / processEvent

Method processEvent

libs/cppdap/src/session.cpp:379–412  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

377 }
378
379 Payload processEvent(dap::json::Deserializer* d) {
380 dap::string event;
381 if (!d->field("event", &event)) {
382 handlers.error("Event missing string 'event' field");
383 return {};
384 }
385
386 const dap::TypeInfo* typeinfo;
387 GenericEventHandler handler;
388 std::tie(typeinfo, handler) = handlers.event(event);
389 if (!typeinfo) {
390 handlers.error("No event handler registered for event '%s'",
391 event.c_str());
392 return {};
393 }
394
395 auto data = new uint8_t[typeinfo->size()];
396 typeinfo->construct(data);
397
398 if (!d->field("body", [&](dap::Deserializer* d) {
399 return typeinfo->deserialize(d, data);
400 })) {
401 handlers.error("Failed to deserialize event '%s' body", event.c_str());
402 typeinfo->destruct(data);
403 delete[] data;
404 return {};
405 }
406
407 return [=] {
408 handler(data);
409 typeinfo->destruct(data);
410 delete[] data;
411 };
412 }
413
414 void processResponse(const dap::Deserializer* d) {
415 dap::integer requestSeq = 0;

Callers

nothing calls this directly

Calls 7

fieldMethod · 0.45
errorMethod · 0.45
eventMethod · 0.45
sizeMethod · 0.45
constructMethod · 0.45
deserializeMethod · 0.45
destructMethod · 0.45

Tested by

no test coverage detected