123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- #ifndef _area_business_count_checker_hpp_
- #define _area_business_count_checker_hpp_
- #include "area_business.h"
- #include "atomic"
- struct area_business_count_checker:area_business
- {
- area_business_count_checker()
- {
- m_mutex=0;
- }
-
- void on_load_his(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data>&ptr);
-
- void on_enter(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data>&ptr);
- void on_hover(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr);
-
- void on_leave(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr);
- private:
-
- void _add_person_count_event(const std::shared_ptr<area_hover>&a,int limit_val,const std::string &desc);
-
- void _remove_person_count_event(const std::shared_ptr<area_hover>&a,int limit_val,const std::string &desc);
-
- void _add_vehicle_count_event(const std::shared_ptr<area_hover>&a,int limit_val,const std::string &desc = "");
-
- void _remove_vehicle_count_event(const std::shared_ptr<area_hover>&a,int limit_val,const std::string &desc = "");
- private:
- std::atomic<int> m_mutex;
- void lock()
- {
- int expected=0;
- while(!m_mutex.compare_exchange_strong(expected,1))
- expected=0;
- assert(m_mutex.load()==1);
- }
- void unlock()
- {
- m_mutex.store(0);
- }
- };
- #endif
|