Skip to content

MultiExecutionListener

MultiExecutionListener fans out order lifecycle events to multiple IOrderExecutionListener targets. It acts as a multicast adapter for OrderExecutionBus subscribers.

class MultiExecutionListener : public IOrderExecutionListener {
public:
  explicit MultiExecutionListener(SubscriberId id);
  void addListener(IOrderExecutionListener* listener);

  // All event methods delegate to added listeners
};

Purpose

  • Aggregate multiple execution listeners into a single subscriber to avoid duplicating subscriptions to the OrderExecutionBus.

Responsibilities

Method Behavior
addListener() Registers a new listener (if not already added).
Event handlers Forwards all events to each registered listener.

Notes

  • Listeners are stored as raw pointers; ownership is not transferred.
  • Prevents duplicate listeners using std::ranges::find().
  • Efficient for use cases like simultaneously tracking PnL, latency, and order audit logs.