12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- #ifndef _WORKER_HPP_
- #define _WORKER_HPP_
- #include <ev++.h>
- #include <atomic>
- #include <vector>
- struct task
- {
- uint32_t m_cmd_code;
- uint32_t m_hash_id;
- task(uint32_t hash_id,uint32_t cmd_code)
- :m_cmd_code(cmd_code)
- ,m_hash_id(hash_id)
- {
- }
- task()
- {}
- void destroy()
- {
- delete this;
- }
- template<typename T> const T&body()const
- {
- return *(T*)this;
- }
- template<typename T> T&body()
- {
- return *(T*)this;
- }
- template<typename T> static task*alloc()
- {
- return new T();
- }
- virtual ~task(){}
- };
- struct area_business;
- struct message_change_business:task
- {
- int area_id;
- std::atomic<int> ref_count;
- std::vector<area_business*> del_list,add_list,new_list;
- };
- struct message_change_card_display:task
- {
- uint64_t m_card_id;
- uint16_t m_display;
- };
- struct worker
- {
- virtual void stop()=0;
- virtual void request(task*tk)=0;
- virtual void broadcast(task*tk)
- {
- }
- virtual int num_thread()
- {
- return 1;
- }
- static worker*instance();
- };
- #endif
|