Best way to implement event handler chains in C++

So I’ve been wondering about the best, blueprint-friendly way to implement event handling with bubbling & priorities. Most of what’s possible with delegates is fine, however the blueprint-friendly version (DECLARE_DYNAMIC_MULTICAST_DELEGATE) doesn’t really know anything about consumers as it only does broadcasting. And it can’t have return values either.

I’ve looked briefly at the Message Bus and Messaging in general, but not quite sure if either support the scenario I’m looking for. I could always roll my own solution, just wanted to know if there was anything already available before I start hacking away…

Requirements:

  • Event bubbling, i.e. if an event is handled by one consumer then it doesn’t propagate up to the next.
  • Handler priority: handler with prio 1 gets called first, followed by the rest

Is the Message Bus and the Messaging framework more of a network thing, or would that be the right place to start?
(I’m not looking for C++ advice)

Cheers,
Dave