123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215 |
- #pragma once
- #include <boost/thread.hpp>
- #include <boost/bind.hpp>
- #include <boost/atomic.hpp>
- #include <boost/shared_ptr.hpp>
- #include <boost/thread/condition.hpp>
- #include <boost/serialization/singleton.hpp>
- #include <ctime>
- #include "thread_safe_map.h"
- #include "ws_common.h"
- #include "jsonBuilder.h"
- namespace sys
- {
- class wsTimerThread
- {
- private:
- boost::shared_ptr<boost::thread> __Thread;
- boost::atomic<bool> __Enable;
- boost::atomic<bool> __Running;
- boost::condition_variable_any __ExitCond;
- boost::mutex __ExitMutex;
- _THREAD_CONFIG_ __Config;
- thread_safe_map<uint64_t, _CARD_POS_> __CardPosList;
- std::time_t __LastSendTime{0};
- jsonBuilder __jsBuilder;
- std::vector<light_state> light_state_list;
- std::vector<device_state> device_state_list;
- private:
-
- void __Reset();
-
- void __ChkConfig();
-
- void __SendCardPos();
- void send_card_pos();
- void temp_send_card_pos();
- void send_light_state();
- void send_device_state();
- protected:
-
- void _ThreadFunc( wsTimerThread* pOwner );
- public:
- wsTimerThread();
- ~wsTimerThread();
-
- void Start();
-
- void Stop();
-
- void Init( const _THREAD_CONFIG_& Config );
-
- void upt_card_pos( const _CARD_POS_& pos );
- void real_upt_card_pos(const _CARD_POS_& pos);
-
- void del_card_pos( const _CARD_POS_& pos );
- void upt_light_state(const light_state& light);
- void upt_device_state(const device_state& ds);
- };
- }
- typedef boost::serialization::singleton<sys::wsTimerThread> singleton_wsTimerThread;
- #define swsTimerThrd singleton_wsTimerThread::get_mutable_instance()
- #define swsTimerThrd_const singleton_wsTimerThread::get_const_instance()
|