#pragma once #include "CollisionDetector.h" #include "DataCollector.h" #include "airport/AirportBounds.h" #include "config/ConnectionConfig.h" #include #include #include struct ControllableVehicleConfig { std::string vehicleNo; std::string ip; int port; }; class System { public: System(); ~System(); bool initialize(const ConnectionConfig& config); void start(); void stop(); private: std::unique_ptr airportBounds_; std::unique_ptr dataCollector_; std::unique_ptr collisionDetector_; std::vector controllableVehicles_; std::thread processThread_; bool running_ = false; void processLoop(); void processCollisions(const std::vector& collisions); bool loadAirportBounds(); bool loadControllableVehicles(); };