7 #include <shared_mutex> 
    8 #include <unordered_map> 
   15     [[nodiscard]] std::unique_ptr<EventSubscriber>
 
   17               std::function<
void(std::shared_ptr<EventMessage> message)> &&
function) 
override;
 
   19     void publish(std::unique_ptr<EventMessage> message) 
override;
 
   21     void publish_async(std::unique_ptr<EventMessage> message) 
override;
 
   27     [[nodiscard]] std::size_t 
count();
 
   30     void clear() noexcept;
 
   33     using mutex_type = std::shared_mutex;
 
   34     mutable mutex_type subscribe_mutex_;
 
   35     std::unordered_multimap<int, std::string> registry_;
 
   36     std::unordered_map<std::string, std::function<void(std::shared_ptr<EventMessage>)>>
 
   39     template <
typename Callable> 
void shared_access(Callable &&callable) {
 
   41             std::shared_lock<mutex_type> lock(subscribe_mutex_);
 
   43         } 
catch (std::system_error &) {
 
   48     template <
typename Callable> 
void exclusive_access(Callable &&callable) {
 
   50             std::unique_lock<mutex_type> lock(subscribe_mutex_);
 
   52         } 
catch (std::system_error &) {
 
Implements the default memory-based simulation event bus type.
Definition: event_bus.h:13
 
void publish_async(std::unique_ptr< EventMessage > message) override
Publishes a message to all subscribers asynchronous.
Definition: event_bus.cpp:33
 
void clear() noexcept
Clear all registered subscribers.
Definition: event_bus.cpp:67
 
std::unique_ptr< EventSubscriber > subscribe(EventType event_id, std::function< void(std::shared_ptr< EventMessage > message)> &&function) override
Subscribes a handler function to an event type identifier.
Definition: event_bus.cpp:8
 
bool unsubscribe(const EventSubscriber &subscriber) override
Unsubscribes from an event notification.
Definition: event_bus.cpp:38
 
std::size_t count()
Gets the number of registered subscribers.
Definition: event_bus.cpp:60
 
void publish(std::unique_ptr< EventMessage > message) override
Publishes a message to all subscribers synchronous.
Definition: event_bus.cpp:21
 
Defines the event aggregator interface type.
Definition: event_aggregator.h:59
 
Defines the event subscriber interface type.
Definition: event_aggregator.h:37
 
Top-level namespace for Health-GPS C++ API.
Definition: analysis_definition.h:8
 
EventType
Event Message type enumeration.
Definition: event_message.h:10