#pragma once #include #include #include #include #include #include struct llarp_config; struct llarp_main; namespace tooling { struct RouterHive { static const size_t MAX_EVENT_QUEUE_SIZE; RouterHive(size_t eventQueueSize = MAX_EVENT_QUEUE_SIZE); void AddRouter(const std::shared_ptr & conf); void StartRouters(); void StopRouters(); void NotifyEvent(RouterEventPtr event); void ProcessEventQueue(); RouterEventPtr GetNextEvent(); /* * Event processing function declarations */ void ProcessPathBuildAttempt(const PathBuildAttemptEvent& event); std::vector routers; std::vector routerMainThreads; llarp::thread::Queue eventQueue; }; } // namespace tooling