/** --------------------------------------------------------------------------- * @file: active.h * * Copyright (c) 2017 Yann Herklotz Grave * MIT License, see LICENSE file for more details. * ---------------------------------------------------------------------------- */ #ifndef YAGE_UTIL_ACTIVE_H #define YAGE_UTIL_ACTIVE_H #include "syncqueue.h" #include #include #include namespace yage { class Active { public: typedef std::function Callback; Active(const Active &) = delete; Active &operator=(const Active &) = delete; ~Active(); static std::unique_ptr create(); void send(Callback message); private: Active(); void run(); bool running_; SyncQueue queue_; std::thread thread_; }; } // namespace yage #endif