#pragma once #include "SimCore/Identifier.hpp" #include "SimCore/IdentifierMaker.hpp" #include #include #include #include #include #include #include #include #include #include namespace TrackList { class TrackList { public: TrackList(SimCore::Identifier OwnID); ~TrackList(); void stopSanitizer(); SimCore::Identifier getTrackID(SimCore::ObjectSource source); void addTrack(std::shared_ptr track); void addTrack(std::shared_ptr track,SensorData sensorData); std::shared_ptr getTrack(SimCore::Identifier TrackID); std::vector getAllIDs(); size_t size(); private: const SimCore::Identifier OwnID_; SimCore::IdentifierMaker IDMaker; void tracklistSanitizer(); void addNewTrack(std::shared_ptr track,SensorData sensorData); void addNewTrack(std::shared_ptr track); std::map> TrackList_; mutable std::mutex mutex_; std::thread sanitizerThread_; std::atomic_bool sanitizerIsRunning_; std::atomic_bool stopSanitizer_; }; }