BaseModule.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. #pragma once
  2. #ifndef _BASEMODULE_
  3. #define _BASEMODULE_
  4. #ifndef BASEMODULE
  5. #define BASEMODULE extern "C" _declspec(dllexport)
  6. #else
  7. #undef BASEMODULE
  8. #define BASEMODULE extern "C" _declspec(dllimport)
  9. #endif
  10. #define CLSID_BASEMODULE L"{DA90D68D-99EB-45D5-A969-BC3D0D12D92A}"
  11. #pragma pack(push,1)
  12. typedef struct USERINFO
  13. {
  14. int id;
  15. char username[64];
  16. char expiretime[64];
  17. char password[64];
  18. char uuid[64];
  19. char level[10];
  20. char unusedTraffic[128];
  21. char access_token[64];
  22. int port;
  23. }USERINFO,*PUSERINFO;
  24. class IBaseCurl;
  25. class IServerList;
  26. class IUserinfo;
  27. //获取其他类的指针
  28. class IBaseGloablModule
  29. {
  30. public:
  31. virtual ~IBaseGloablModule(void) {}
  32. ////获取错误的消息
  33. //virtual LPCSTR GetLastErrorA() = 0;
  34. //virtual LPCWSTR GetLastErrorW() = 0;
  35. virtual IBaseCurl* GetBaseCurlInstance() = 0;
  36. virtual INT AddRef() = 0;
  37. virtual INT Release() = 0;
  38. };
  39. template<typename T>
  40. class IInstanceList
  41. {
  42. public:
  43. IInstanceList(void)
  44. {
  45. m_pNext = NULL;
  46. m_pPrev = NULL;
  47. }
  48. virtual ~IInstanceList(void)
  49. {
  50. Detach();
  51. }
  52. virtual void AddInstance(T* pInstance)
  53. {
  54. if (m_pNext && (m_pNext != pInstance))
  55. m_pNext->AddInstance(pInstance);
  56. else
  57. {
  58. pInstance->m_pPrev = (T*)this;
  59. m_pNext = pInstance;
  60. }
  61. }
  62. virtual void Detach()
  63. {
  64. if (m_pNext)
  65. m_pNext->m_pPrev = m_pPrev;
  66. if (m_pPrev)
  67. m_pPrev->m_pNext = m_pNext;
  68. m_pPrev = m_pNext = NULL;
  69. }
  70. T* m_pPrev;
  71. T* m_pNext;
  72. };
  73. class IServerListCallback
  74. {
  75. public:
  76. virtual ~IServerListCallback(void) {};
  77. virtual void ServerListCallback() = 0;
  78. };
  79. class IServerList
  80. : public IInstanceList<IServerList>
  81. {
  82. public:
  83. virtual ~IServerList(void) {};
  84. };
  85. class IUserinfo
  86. : public IInstanceList<IUserinfo>
  87. {
  88. public:
  89. virtual ~IUserinfo(void) {};
  90. };
  91. enum HTTPRET
  92. {
  93. http_no = 0,
  94. http_f,
  95. http_yes,
  96. http_start,
  97. http_end,
  98. };
  99. //请求网络接口
  100. class IBaseCurl
  101. : public IInstanceList<IBaseCurl>
  102. {
  103. public:
  104. virtual ~IBaseCurl(void) {};
  105. virtual void SetUrl(LPCSTR url) = 0;
  106. //登录
  107. virtual HTTPRET PostLogin(LPCSTR username,LPCSTR password,LPCSTR& data) = 0;
  108. virtual HTTPRET GetHttpConnectstatus() = 0;
  109. virtual LPCSTR GetLastErrorA() = 0;
  110. virtual LPCWSTR GetLastErrorW() = 0;
  111. };
  112. BASEMODULE IBaseGloablModule* WINAPI GetBaseGlobalInstance();
  113. BASEMODULE BOOL WINAPI ReleaseBaseGlobalInstance();
  114. #pragma pack(pop)
  115. #endif