/* * threads_actor_thread.hpp * * Created on: Nov 13, 2021 * Author: erki */ #ifndef SKULLC_THREADS_ACTOR_THREAD_HPP_ #define SKULLC_THREADS_ACTOR_THREAD_HPP_ #include #include #include #include #include namespace Threads { class IActor; class ActorThread : public Thread { public: ActorThread(const std::size_t queue_length, const char* name, const osPriority_t priority, const std::uint32_t stack_size); void operator()(); private: void init_(); void doMessageLoop_(); friend class IActor; std::size_t acceptActor_(IActor* actor); std::size_t queue_length_; std::size_t queue_item_length_ = 0; QueueHandle_t queue_ = nullptr; char* rx_buffer_ = nullptr; char* tx_buffer_ = nullptr; std::array actors_; }; }// namespace Threads #endif /* SKULLC_THREADS_ACTOR_THREAD_HPP_ */