Leaked source code of windows server 2003
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.

218 lines
4.9 KiB

  1. //////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Copyright (c) 2001 Microsoft Corporation
  4. //
  5. // Module Name:
  6. // NamedCookie.h
  7. //
  8. // Implementation Files:
  9. // NamedCookie.cpp
  10. //
  11. // Description:
  12. // This file contains the declaration of the SNamedCookie structure.
  13. //
  14. // This is a helper for CClusCfgWizard, but has its own file
  15. // due to the one-class-per-file restriction.
  16. //
  17. // Maintained By:
  18. // John Franco (jfranco) 23-AUG-2001
  19. //
  20. //////////////////////////////////////////////////////////////////////////////
  21. // Make sure that this file is included only once per compile path.
  22. #pragma once
  23. //////////////////////////////////////////////////////////////////////////////
  24. // Include Files
  25. //////////////////////////////////////////////////////////////////////////////
  26. #include <DynamicArray.h>
  27. //////////////////////////////////////////////////////////////////////////////
  28. // Constant Declarations
  29. //////////////////////////////////////////////////////////////////////////////
  30. //////////////////////////////////////////////////////////////////////////////
  31. //++
  32. //
  33. // struct SNamedCookie
  34. //
  35. // Description:
  36. // Struct for associating a cluster or node display name with the
  37. // name used by the middle tier objects, and caching the cookie and
  38. // interface pointer so that the middle tier object manager's FindObject
  39. // method need not be called more than once.
  40. //
  41. //--
  42. //////////////////////////////////////////////////////////////////////////////
  43. struct SNamedCookie
  44. {
  45. BSTR bstrName;
  46. OBJECTCOOKIE ocObject;
  47. IUnknown* punkObject;
  48. SNamedCookie();
  49. ~SNamedCookie();
  50. void Erase( void );
  51. void ReleaseObject( void );
  52. bool FHasObject( void ) const;
  53. bool FHasCookie( void ) const;
  54. bool FHasName( void ) const;
  55. HRESULT HrAssign( const SNamedCookie& crSourceIn );
  56. struct AssignmentOperator // For use with DynamicArray template.
  57. {
  58. HRESULT operator()( SNamedCookie& rDestInOut, const SNamedCookie& rSourceIn ) const
  59. {
  60. return rDestInOut.HrAssign( rSourceIn );
  61. }
  62. };
  63. private:
  64. SNamedCookie( const SNamedCookie& );
  65. SNamedCookie& operator=( const SNamedCookie& );
  66. }; //*** struct SNamedCookie
  67. //////////////////////////////////////////////////////////////////////////////
  68. //++
  69. //
  70. // SNamedCookie::Erase
  71. //
  72. // Description:
  73. //
  74. // Arguments:
  75. // None.
  76. //
  77. // Return Values:
  78. // None.
  79. //
  80. // Remarks:
  81. //
  82. //--
  83. //////////////////////////////////////////////////////////////////////////////
  84. inline void SNamedCookie::Erase( void )
  85. {
  86. TraceFunc( "" );
  87. if ( bstrName != NULL )
  88. {
  89. TraceSysFreeString( bstrName );
  90. bstrName = NULL;
  91. }
  92. ReleaseObject();
  93. ocObject = 0;
  94. TraceFuncExit();
  95. } //*** SNamedCookie::Erase
  96. //////////////////////////////////////////////////////////////////////////////
  97. //++
  98. //
  99. // SNamedCookie::ReleaseObject
  100. //
  101. // Description:
  102. //
  103. // Arguments:
  104. // None.
  105. //
  106. // Return Values:
  107. // None.
  108. //
  109. // Remarks:
  110. //
  111. //--
  112. //////////////////////////////////////////////////////////////////////////////
  113. inline void SNamedCookie::ReleaseObject( void )
  114. {
  115. TraceFunc( "" );
  116. if ( punkObject != NULL )
  117. {
  118. punkObject->Release();
  119. punkObject = NULL;
  120. }
  121. TraceFuncExit();
  122. }
  123. //////////////////////////////////////////////////////////////////////////////
  124. //++
  125. //
  126. // SNamedCookie::FHasObject
  127. //
  128. // Description:
  129. //
  130. // Arguments:
  131. // None.
  132. //
  133. // Return Values:
  134. // true
  135. // false
  136. //
  137. // Remarks:
  138. //
  139. //--
  140. //////////////////////////////////////////////////////////////////////////////
  141. inline bool SNamedCookie::FHasObject( void ) const
  142. {
  143. TraceFunc( "" );
  144. RETURN( punkObject != NULL );
  145. }
  146. //////////////////////////////////////////////////////////////////////////////
  147. //++
  148. //
  149. // SNamedCookie::FHasCookie
  150. //
  151. // Description:
  152. //
  153. // Arguments:
  154. // None.
  155. //
  156. // Return Values:
  157. // true
  158. // false
  159. //
  160. // Remarks:
  161. //
  162. //--
  163. //////////////////////////////////////////////////////////////////////////////
  164. inline bool SNamedCookie::FHasCookie( void ) const
  165. {
  166. TraceFunc( "" );
  167. RETURN( ocObject != 0 );
  168. }
  169. //////////////////////////////////////////////////////////////////////////////
  170. //++
  171. //
  172. // SNamedCookie::FHasName
  173. //
  174. // Description:
  175. //
  176. // Arguments:
  177. // None.
  178. //
  179. // Return Values:
  180. // true
  181. // false
  182. //
  183. // Remarks:
  184. //
  185. //--
  186. //////////////////////////////////////////////////////////////////////////////
  187. inline bool SNamedCookie::FHasName( void ) const
  188. {
  189. TraceFunc( "" );
  190. RETURN( bstrName != NULL );
  191. }
  192. typedef Generics::DynamicArray< SNamedCookie, SNamedCookie::AssignmentOperator > NamedCookieArray;