diff options
Diffstat (limited to 'TAO/tao/Cache_Entries.h')
-rw-r--r-- | TAO/tao/Cache_Entries.h | 167 |
1 files changed, 167 insertions, 0 deletions
diff --git a/TAO/tao/Cache_Entries.h b/TAO/tao/Cache_Entries.h new file mode 100644 index 00000000000..f52acf4cc53 --- /dev/null +++ b/TAO/tao/Cache_Entries.h @@ -0,0 +1,167 @@ +/* -*- C++ -*- */ +// $Id$ + +// ============================================================================ +// +// = LIBRARY +// TAO +// +// = FILENAME +// Cache_Entries.h +// +// = AUTHOR +// Bala Natarajan <bala@cs.wustl.edu> +// +// ============================================================================ + +#ifndef TAO_CACHE_ENTRIES_H +#define TAO_CACHE_ENTRIES_H +#include "ace/pre.h" + +#include "tao/Base_Connection_Property.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#if defined(_MSC_VER) +#if (_MSC_VER >= 1200) +#pragma warning(push) +#endif /* _MSC_VER >= 1200 */ +#pragma warning(disable:4250) +#endif /* _MSC_VER */ + +class TAO_Connection_Handler; +class Tao_Base_Connection_Property; + +class TAO_Export TAO_Cache_IntId +{ + // = TITLE + // Helper class for TAO_Connection_Cache_Manager + // + // = DESCRIPTION + // Helper class that wraps the <value> part of the Map or + // table holding the Connection state.: unifies data items, so + // they can be stored together as a <value> for a <key> in a + // table holding the state of the Connection Cache. + +public: + + // = Initialization and termination methods. + + TAO_Cache_IntId (void); + // Constructor. + + TAO_Cache_IntId (TAO_Connection_Handler *handler); + // Constructor. + + TAO_Cache_IntId (const TAO_Cache_IntId & rhs); + // Copy constructor. + + ~TAO_Cache_IntId (void); + // Destructor. + + void operator= (const TAO_Cache_IntId &rhs); + // Assignment operator (does copy memory). + + int operator== (const TAO_Cache_IntId &rhs) const; + // Equality comparison operator (must match both id_ and kind_). + + int operator!= (const TAO_Cache_IntId &rhs) const; + // Inequality comparison operator. + + TAO_Connection_Handler *handler (void); + // Return the underlying handler + + const TAO_Connection_Handler *handler (void) const; + // Return the underlying handler + + void recycle_state (ACE_Recyclable_State new_state); + + ACE_Recyclable_State recycle_state (void); + // Get/Set <recycle_state>. + +private: + + TAO_Connection_Handler *handler_; + // The connection handler that needs to be cached. + + ACE_Recyclable_State recycle_state_; + // The state of the handle +}; + + +class TAO_Export TAO_Cache_ExtId +{ + // = TITLE + // Helper class for TAO_Connection_Cache_Manager: unifies + // several data items, so they can be stored together as a + // <value> for a <key> in a hash table holding the state of the + // Connection Cache. + // + // = DESCRIPTION + // +public: + // = Initialization and termination methods. + + TAO_Cache_ExtId (void); + // Constructor. + + TAO_Cache_ExtId (TAO_Base_Connection_Property *prop); + // Constructor. + + TAO_Cache_ExtId (const TAO_Cache_ExtId & rhs); + // Copy constructor. + + ~TAO_Cache_ExtId (void); + // Destructor. + + // = Assignment and comparison operators. + void operator= (const TAO_Cache_ExtId &rhs); + // Assignment operator (does copy memory). + + int operator== (const TAO_Cache_ExtId &rhs) const; + // Equality comparison operator (must match both id_ and kind_). + + int operator!= (const TAO_Cache_ExtId &rhs) const; + // Inequality comparison operator. + + u_long hash (void) const; + // <hash> function is required in order for this class to be usable by + // ACE_Hash_Map_Manager. + + void duplicate (void); + // Make a deep copy of the underlying pointer + + CORBA::ULong index (void); + // Return the index value + + void index (CORBA::ULong index); + // Set the index value. This calls should not be used by any users + // but for the TAO_Connection_Cache_Manager class. + + // = Accessors + +private: + // = Data members. + + TAO_Base_Connection_Property *connection_property_; + // A property object that we represent. + + CORBA::Boolean is_delete_; + // Do we need to delete connection_propert_? + + CORBA::ULong index_; + // This is a supplementary index. Would be set to zero by + // default. Would be altered by the Connection_Cache of TAO. Please + // see the documentation of TAO_Connection_Cache_Manager for + // details. +}; + + +#if defined (__ACE_INLINE__) +# include "tao/Cache_Entries.inl" +#endif /* __ACE_INLINE__ */ + +#include "ace/post.h" +#endif /* TAO_CACHE_ENTRIES_H */ |