2#ifndef _CONSOLIX_EVENT_HUB_COMPONENT_HPP_INCLUDED
3#define _CONSOLIX_EVENT_HUB_COMPONENT_HPP_INCLUDED
9#if CONSOLIX_USE_EVENT_HUB == 1
13#include <event_hub.hpp>
23 class EventHubComponent :
25 public IShutdownable {
28 static constexpr std::size_t default_max_tasks_per_pass = 128;
31 EventHubComponent() =
default;
38 event_hub::EventBus* event_bus,
39 event_hub::TaskManager* task_manager =
nullptr,
40 std::size_t max_tasks_per_pass = default_max_tasks_per_pass) :
41 m_event_bus(event_bus),
42 m_task_manager(task_manager),
43 m_max_tasks_per_pass(max_tasks_per_pass) {
48 void set_event_bus(event_hub::EventBus* event_bus) {
49 m_event_bus = event_bus;
54 void set_task_manager(event_hub::TaskManager* task_manager) {
55 m_task_manager = task_manager;
60 void set_max_tasks_per_pass(std::size_t max_tasks_per_pass) {
61 m_max_tasks_per_pass = max_tasks_per_pass;
66 std::size_t last_work_count()
const {
67 return m_last_work_count;
71 bool initialize()
override {
76 bool is_initialized()
const override {
80 void process()
override {
81 std::size_t work_count = 0;
84 work_count += m_event_bus->process();
87 work_count += m_task_manager->process(m_max_tasks_per_pass);
90 m_last_work_count = work_count;
93 void shutdown(
int )
override {
95 m_event_bus->clear_pending();
98 m_task_manager->clear_pending();
103 event_hub::EventBus* m_event_bus{
nullptr};
104 event_hub::TaskManager* m_task_manager{
nullptr};
105 std::size_t m_max_tasks_per_pass{default_max_tasks_per_pass};
106 std::size_t m_last_work_count{0};
107 bool m_is_init{
false};
< Utility modules and helpers.