////////////////////////////////////////////////////////////////////////////// // // Copyright (c) 2001 Microsoft Corporation // // Module Name: // NamedCookie.h // // Implementation Files: // NamedCookie.cpp // // Description: // This file contains the declaration of the SNamedCookie structure. // // This is a helper for CClusCfgWizard, but has its own file // due to the one-class-per-file restriction. // // Maintained By: // John Franco (jfranco) 23-AUG-2001 // ////////////////////////////////////////////////////////////////////////////// // Make sure that this file is included only once per compile path. #pragma once ////////////////////////////////////////////////////////////////////////////// // Include Files ////////////////////////////////////////////////////////////////////////////// #include ////////////////////////////////////////////////////////////////////////////// // Constant Declarations ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// //++ // // struct SNamedCookie // // Description: // Struct for associating a cluster or node display name with the // name used by the middle tier objects, and caching the cookie and // interface pointer so that the middle tier object manager's FindObject // method need not be called more than once. // //-- ////////////////////////////////////////////////////////////////////////////// struct SNamedCookie { BSTR bstrName; OBJECTCOOKIE ocObject; IUnknown* punkObject; SNamedCookie(); ~SNamedCookie(); void Erase( void ); void ReleaseObject( void ); bool FHasObject( void ) const; bool FHasCookie( void ) const; bool FHasName( void ) const; HRESULT HrAssign( const SNamedCookie& crSourceIn ); struct AssignmentOperator // For use with DynamicArray template. { HRESULT operator()( SNamedCookie& rDestInOut, const SNamedCookie& rSourceIn ) const { return rDestInOut.HrAssign( rSourceIn ); } }; private: SNamedCookie( const SNamedCookie& ); SNamedCookie& operator=( const SNamedCookie& ); }; //*** struct SNamedCookie ////////////////////////////////////////////////////////////////////////////// //++ // // SNamedCookie::Erase // // Description: // // Arguments: // None. // // Return Values: // None. // // Remarks: // //-- ////////////////////////////////////////////////////////////////////////////// inline void SNamedCookie::Erase( void ) { TraceFunc( "" ); if ( bstrName != NULL ) { TraceSysFreeString( bstrName ); bstrName = NULL; } ReleaseObject(); ocObject = 0; TraceFuncExit(); } //*** SNamedCookie::Erase ////////////////////////////////////////////////////////////////////////////// //++ // // SNamedCookie::ReleaseObject // // Description: // // Arguments: // None. // // Return Values: // None. // // Remarks: // //-- ////////////////////////////////////////////////////////////////////////////// inline void SNamedCookie::ReleaseObject( void ) { TraceFunc( "" ); if ( punkObject != NULL ) { punkObject->Release(); punkObject = NULL; } TraceFuncExit(); } ////////////////////////////////////////////////////////////////////////////// //++ // // SNamedCookie::FHasObject // // Description: // // Arguments: // None. // // Return Values: // true // false // // Remarks: // //-- ////////////////////////////////////////////////////////////////////////////// inline bool SNamedCookie::FHasObject( void ) const { TraceFunc( "" ); RETURN( punkObject != NULL ); } ////////////////////////////////////////////////////////////////////////////// //++ // // SNamedCookie::FHasCookie // // Description: // // Arguments: // None. // // Return Values: // true // false // // Remarks: // //-- ////////////////////////////////////////////////////////////////////////////// inline bool SNamedCookie::FHasCookie( void ) const { TraceFunc( "" ); RETURN( ocObject != 0 ); } ////////////////////////////////////////////////////////////////////////////// //++ // // SNamedCookie::FHasName // // Description: // // Arguments: // None. // // Return Values: // true // false // // Remarks: // //-- ////////////////////////////////////////////////////////////////////////////// inline bool SNamedCookie::FHasName( void ) const { TraceFunc( "" ); RETURN( bstrName != NULL ); } typedef Generics::DynamicArray< SNamedCookie, SNamedCookie::AssignmentOperator > NamedCookieArray;