module_device_net.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. /*
  2. * @file
  3. * module_device_net.h
  4. *
  5. * @brief
  6. * 设备网络连接明细业务
  7. * @version
  8. * V1.0
  9. * @author
  10. * zhuyf
  11. * @date
  12. * 2022/01/11
  13. * @note
  14. *
  15. * @warning
  16. * @bug
  17. * @copyright
  18. * */
  19. #ifndef module_device_net_hpp
  20. #define module_device_net_hpp
  21. #include <map>
  22. #include <string>
  23. #include <memory>
  24. #include <time.h>
  25. #include "module_singleton_base.h"
  26. // 设备包括定位基站、通信基站、红绿灯等
  27. struct device_info{
  28. std::string m_did; // 设备类型+ID号,形如0030000000004
  29. int m_id; // 设备ID号
  30. int m_type; // 设备类型
  31. time_t m_time; // 设备网络建立时间
  32. device_info()
  33. : m_did("")
  34. , m_id(0)
  35. , m_type(0)
  36. , m_time(0)
  37. {}
  38. device_info(const std::string& did, const int& id, const int& type, const time_t& t)
  39. : m_did(did)
  40. , m_id(id)
  41. , m_type(type)
  42. , m_time(t)
  43. {}
  44. };
  45. struct net_device_info{
  46. std::string m_ip; // 网络的IP
  47. std::map<std::string, device_info> m_device_list; // key value
  48. net_device_info()
  49. : m_ip("")
  50. {}
  51. net_device_info(const std::string& ip)
  52. : m_ip(ip)
  53. {}
  54. ~net_device_info()
  55. {
  56. clear();
  57. }
  58. void clear()
  59. {
  60. m_device_list.clear();
  61. }
  62. bool exist(const std::string& device_id)
  63. {
  64. auto it = m_device_list.find(device_id);
  65. if(it != m_device_list.end()){
  66. return true;
  67. }
  68. return false;
  69. }
  70. };
  71. class module_device_net: public singleton_base<module_device_net>
  72. {
  73. private:
  74. friend class singleton_base<module_device_net>;
  75. module_device_net(){}
  76. public:
  77. void load_db();
  78. void do_business(const std::string& ip, const int& id, const int & type);
  79. bool exist(const std::string& ip);
  80. void clear();
  81. void clear(const std::string& ip);
  82. private:
  83. std::mutex m_mtx;
  84. std::map<std::string, std::shared_ptr<net_device_info>> m_socket_device_list;
  85. };
  86. #endif