Line data Source code
1 : /*! 2 : * \file 3 : * \brief Class module::Sleeper. 4 : */ 5 : #ifndef SLEEPER_HPP_ 6 : #define SLEEPER_HPP_ 7 : 8 : #include <cstdint> 9 : 10 : #include "Module/Stateful/Stateful.hpp" 11 : 12 : namespace spu 13 : { 14 : namespace module 15 : { 16 : namespace slp 17 : { 18 : enum class tsk : size_t 19 : { 20 : sleep, 21 : SIZE 22 : }; 23 : 24 : namespace sck 25 : { 26 : enum class sleep : size_t 27 : { 28 : status 29 : }; 30 : } 31 : } 32 : 33 : class Sleeper : public Stateful 34 : { 35 : public: 36 : inline runtime::Task& operator[](const slp::tsk t); 37 : inline runtime::Socket& operator[](const slp::sck::sleep s); 38 : inline runtime::Socket& operator[](const std::string& tsk_sck); 39 : 40 : protected: 41 : size_t ns; 42 : 43 : public: 44 : Sleeper(const size_t ns = 0); 45 0 : virtual ~Sleeper() = default; 46 : virtual Sleeper* clone() const; 47 : 48 : size_t get_ns() const; 49 : void set_ns(const size_t ns); 50 : 51 : void sleep(const int frame_id = -1, const bool managed_memory = true); 52 : 53 : protected: 54 : virtual void _sleep(const size_t frame_id); 55 : }; 56 : } 57 : } 58 : 59 : #ifndef DOXYGEN_SHOULD_SKIP_THIS 60 : #include "Module/Stateful/Sleeper/Sleeper.hxx" 61 : #endif 62 : 63 : #endif /* SLEEPER_HPP_ */