ClientsThreadMap.cpp 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. #include "ClientsThreadMap.h"
  2. /*
  3. BusClientWrapper::BusClientWrapper()
  4. {
  5. m_IsConnected = false;
  6. m_pClient = new BUSC::BLOBStreamClient();
  7. }
  8. BusClientWrapper::~BusClientWrapper()
  9. {
  10. delete m_pClient;
  11. m_pClient = NULL;
  12. }
  13. bool BusClientWrapper::IsConnected()
  14. {
  15. return m_IsConnected;
  16. }
  17. void BusClientWrapper::SetConnection(bool Flag)
  18. {
  19. m_IsConnected = Flag;
  20. }
  21. BUSC::BLOBStreamClient* BusClientWrapper::GetBusClient()
  22. {
  23. //OwnerÏß³Ì
  24. if (m_IsConnected == false)
  25. {
  26. delete m_pClient;
  27. m_pClient = new BUSC::BLOBStreamClient();
  28. }
  29. return m_pClient;
  30. }
  31. //---------------
  32. ClientsThreadMap::ClientsThreadMap()
  33. {
  34. }
  35. ClientsThreadMap::~ClientsThreadMap()
  36. {
  37. Clear();
  38. }
  39. void ClientsThreadMap::Clear()
  40. {
  41. Thread_Lock();
  42. map<DWORD, BusClientWrapper*>::iterator iter = m_ThreadMap.begin();
  43. while (iter != m_ThreadMap.end())
  44. {
  45. delete iter->second;
  46. iter = m_ThreadMap.erase(iter);
  47. }
  48. Thread_UnLock();
  49. }
  50. BusClientWrapper* ClientsThreadMap::operator [](DWORD Tid)
  51. {
  52. BusClientWrapper* p = NULL;
  53. Thread_Lock();
  54. map<DWORD, BusClientWrapper*>::iterator iter = m_ThreadMap.find(Tid);
  55. if (iter != m_ThreadMap.end())
  56. {
  57. p = m_ThreadMap[Tid];
  58. }
  59. if (p == NULL)
  60. {
  61. p = new BusClientWrapper();
  62. m_ThreadMap[Tid] = p;
  63. }
  64. Thread_UnLock();
  65. return p;
  66. }
  67. void ClientsThreadMap::UnRegistThread(DWORD Tid)
  68. {
  69. Thread_Lock();
  70. map<DWORD, BusClientWrapper*>::iterator iter = m_ThreadMap.find(Tid);
  71. if (iter != m_ThreadMap.end())
  72. {
  73. delete iter->second;
  74. m_ThreadMap.erase(iter);
  75. }
  76. Thread_UnLock();
  77. }
  78. void ClientsThreadMap::Disconnected()
  79. {
  80. Thread_Lock();
  81. map<DWORD, BusClientWrapper*>::iterator iter = m_ThreadMap.begin();
  82. while (iter != m_ThreadMap.end())
  83. {
  84. iter->second->SetConnection(false);
  85. ++iter;
  86. }
  87. Thread_UnLock();
  88. }
  89. */