Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

325 lines
6.1 KiB

  1. #ifndef _MNLBCLUSTER_H
  2. #define _MNLBCLUSTER_H
  3. //
  4. // Copyright (c) Microsoft. All Rights Reserved
  5. //
  6. // THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF Microsoft.
  7. // The copyright notice above does not evidence any
  8. // actual or intended publication of such source code.
  9. //
  10. // OneLiner : MNLBCluster interface.
  11. // DevUnit : wlbstest
  12. // Author : Murtaza Hakim
  13. //
  14. // Description:
  15. // -----------
  16. // Include Files
  17. #include "MNLBHost.h"
  18. #include "Common.h"
  19. #include "MNLBMachine.h"
  20. #include <vector>
  21. #include <memory>
  22. #include <string>
  23. #include <wbemidl.h>
  24. #include <comdef.h>
  25. using namespace std;
  26. //
  27. class MNLBCluster
  28. {
  29. public:
  30. enum MNLBCluster_Error
  31. {
  32. MNLBCluster_SUCCESS = 0,
  33. COM_FAILURE = 1,
  34. CONNECT_FAILED = 2,
  35. NO_CLUSTER = 3,
  36. UNCONSTRUCTED = 4,
  37. };
  38. //
  39. //
  40. // Description:
  41. // -----------
  42. // constructor.
  43. //
  44. // Parameters:
  45. // ----------
  46. // cip IN : cluster ip address.
  47. //
  48. // Returns:
  49. // -------
  50. // none.
  51. MNLBCluster( _bstr_t cip );
  52. //
  53. // Description:
  54. // -----------
  55. // default constructor.
  56. //
  57. // Parameters:
  58. // ----------
  59. // none.
  60. //
  61. // Returns:
  62. // -------
  63. MNLBCluster();
  64. //
  65. // Description:
  66. // -----------
  67. // copy constructor.
  68. //
  69. // Parameters:
  70. // ----------
  71. // mcluster IN : object to copy.
  72. //
  73. // Returns:
  74. // -------
  75. // none.
  76. MNLBCluster(const MNLBCluster& mcluster);
  77. //
  78. // Description:
  79. // -----------
  80. // assignment operator
  81. //
  82. // Parameters:
  83. // ----------
  84. // rhs IN : object to assign.
  85. //
  86. // Returns:
  87. // -------
  88. // self
  89. MNLBCluster&
  90. operator=( const MNLBCluster& rhs );
  91. //
  92. // Description:
  93. // -----------
  94. // destructor
  95. //
  96. // Parameters:
  97. // ----------
  98. // none
  99. //
  100. // Returns:
  101. // -------
  102. // none.
  103. ~MNLBCluster();
  104. //
  105. // Description:
  106. // -----------
  107. // refreshes the wmi connection to the host
  108. //
  109. // Parameters:
  110. // ----------
  111. // none
  112. //
  113. // Returns:
  114. // -------
  115. // SUCCESS else error code.
  116. MNLBCluster_Error
  117. refreshConnection();
  118. //
  119. // Description:
  120. // -----------
  121. // gets the cluster properties.
  122. //
  123. // Parameters:
  124. // ----------
  125. // cp OUT : cluster properties.
  126. //
  127. // Returns:
  128. // -------
  129. // SUCCESS else error code.
  130. MNLBCluster_Error
  131. getClusterProperties( ClusterProperties* cp );
  132. //
  133. // Description:
  134. // -----------
  135. // get the hosts participating in the cluster.
  136. //
  137. // Parameters:
  138. // ----------
  139. // hosts OUT : hosts who are members of the cluster.
  140. //
  141. // Returns:
  142. // -------
  143. // SUCCESS else error code.
  144. MNLBCluster_Error
  145. getHosts( vector<MNLBHost>* hosts );
  146. // operations defined on cluster.
  147. //
  148. // Description:
  149. // -----------
  150. // starts cluster operations.
  151. //
  152. // Parameters:
  153. // ----------
  154. // retVal OUT : return value of method ran.
  155. //
  156. // Returns:
  157. // -------
  158. // SUCCESS else error code.
  159. MNLBCluster_Error
  160. start( unsigned long* retVal );
  161. //
  162. // Description:
  163. // -----------
  164. // stops cluster operations.
  165. //
  166. // Parameters:
  167. // ----------
  168. // retVal OUT : return value of method ran.
  169. //
  170. // Returns:
  171. // -------
  172. // SUCCESS else error code.
  173. MNLBCluster_Error
  174. stop( unsigned long* retVal );
  175. //
  176. // Description:
  177. // -----------
  178. // resume control over cluster operations.
  179. //
  180. // Parameters:
  181. // ----------
  182. // retVal OUT : return value of method ran.
  183. //
  184. // Returns:
  185. // -------
  186. // SUCCESS else error code.
  187. MNLBCluster_Error
  188. resume( unsigned long* retVal );
  189. //
  190. // Description:
  191. // -----------
  192. // suspend control over cluster operations.
  193. //
  194. // Parameters:
  195. // ----------
  196. // retVal OUT : return value of method ran.
  197. //
  198. // Returns:
  199. // -------
  200. // SUCCESS else error code.
  201. MNLBCluster_Error
  202. suspend( unsigned long* retVal );
  203. //
  204. // Description:
  205. // -----------
  206. // finishes all existing connections and
  207. // stops cluster operations.
  208. //
  209. // Parameters:
  210. // ----------
  211. // retVal OUT : return value of method ran.
  212. //
  213. // Returns:
  214. // -------
  215. // SUCCESS else error code.
  216. MNLBCluster_Error
  217. drainstop( unsigned long* retVal );
  218. //
  219. // Description:
  220. // -----------
  221. // enables traffic for port rule.
  222. //
  223. // Parameters:
  224. // ----------
  225. // retVal OUT : return value of method ran.
  226. // port IN : port to affect or default is all ports.
  227. //
  228. // Returns:
  229. // -------
  230. // SUCCESS else error code.
  231. MNLBCluster_Error
  232. enable( unsigned long* retVal, unsigned long port = Common::ALL_PORTS );
  233. //
  234. // Description:
  235. // -----------
  236. // disables ALL traffic for port rule.
  237. //
  238. // Parameters:
  239. // ----------
  240. // retVal OUT : return value of method ran.
  241. // port IN : port to affect or default is all ports.
  242. //
  243. // Returns:
  244. // -------
  245. // SUCCESS else error code.
  246. MNLBCluster_Error
  247. disable( unsigned long* retVal, unsigned long port = Common::ALL_PORTS );
  248. //
  249. // Description:
  250. // -----------
  251. // disables NEW traffic for port rule.
  252. //
  253. // Parameters:
  254. // ----------
  255. // retVal OUT : return value of method ran.
  256. // port IN : port to affect or default is all ports.
  257. //
  258. // Returns:
  259. // -------
  260. // SUCCESS else error code.
  261. MNLBCluster_Error
  262. drain( unsigned long* retVal, unsigned long port = Common::ALL_PORTS );
  263. private:
  264. _bstr_t m_clusterIP;
  265. auto_ptr< MNLBMachine > m_pMachine;
  266. };
  267. //
  268. // Ensure type safety
  269. typedef class MNLBCluster MNLBCluster;
  270. #endif