123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- #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 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
|