diff options
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Naming/Bindings_Iterator_T.h')
-rw-r--r-- | TAO/orbsvcs/orbsvcs/Naming/Bindings_Iterator_T.h | 67 |
1 files changed, 16 insertions, 51 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Naming/Bindings_Iterator_T.h b/TAO/orbsvcs/orbsvcs/Naming/Bindings_Iterator_T.h index 177061c8e67..95bffc2582e 100644 --- a/TAO/orbsvcs/orbsvcs/Naming/Bindings_Iterator_T.h +++ b/TAO/orbsvcs/orbsvcs/Naming/Bindings_Iterator_T.h @@ -16,7 +16,7 @@ #ifndef TAO_BINDINGS_ITERATOR_T_H #define TAO_BINDINGS_ITERATOR_T_H -#include "Hash_Naming_Context.h" +#include "orbsvcs/CosNamingS.h" template <class ITERATOR, class TABLE_ENTRY> class TAO_Bindings_Iterator : public virtual PortableServer::RefCountServantBase, @@ -24,99 +24,64 @@ class TAO_Bindings_Iterator : public virtual PortableServer::RefCountServantBase { // = TITLE // This class implements the <BindingIterator> interface that is - // part of the <CosNaming> idl module. This class works with Hash_Map-based - // implementations of CosNaming::NamingContext. + // part of the <CosNaming> idl module based on the Hash_Map + // implementation for CosNaming::NamingContext. // // = DESCRIPTION - // This class is templatized by the types of the underlying - // hash table iterator and hash table entry, so that it can be - // used for both TAO_Transient_Naming_Context and - // TAO_Persistent_Naming_Context (and any other classes with - // underlying data structures supporting - // ACE_Hash_Map_Manager/Iterator - like interfaces). - // - // Instances of <TAO_Bindings_Iterator>s affect reference counts - // of corresponding Naming Contexts. Reference count on a - // Naming Context is incremented by one for a lifetime of each - // instance of <TAO_Bindings_Iterator> created for that - // context, i.e., a Naming Context cannot - // be cleaned up (but, of course, it can be invalidated) before - // all of its iterators have been cleaned up. When <destroy> - // method is invoked on a Naming Context, all of its iterators are - // destroyed in a "lazy evaluation" fashion, i.e., whenever a next - // operation is invoked on an iterator, and it can detect that - // the corresponding Naming Context has been invalidated, the - // iterator is destroyed. - // + // <TAO_Hash_Binding_Iterator> constructor expects a pointer to a + // dynamically allocated hash map iterator. Destructor + // deallocates hash map iterator. public: // = Intialization and termination methods. - TAO_Bindings_Iterator (TAO_Hash_Naming_Context *context, - ITERATOR *hash_iter, + TAO_Bindings_Iterator (ITERATOR *hash_iter, PortableServer::POA_ptr poa, ACE_SYNCH_RECURSIVE_MUTEX &lock); - // Constructor expects a pointer to a - // dynamically allocated hash map iterator (destructor - // deallocates hash map iterator). - + // Constructor. ~TAO_Bindings_Iterator (void); // Destructor. - virtual PortableServer::POA_ptr _default_POA (CORBA::Environment &env); // Returns the Default POA of this Servant object - - // = Idl methods. + virtual PortableServer::POA_ptr _default_POA (CORBA::Environment &env); CORBA::Boolean next_one (CosNaming::Binding_out b, CORBA::Environment &ACE_TRY_ENV) ACE_THROW_SPEC ((CORBA::SystemException)); - // This operation passes back the next unseen binding. True is - // returned if a binding is passed back, and false is returned otherwise. + // This operation returns the next binding. If there are no more + // bindings false is returned. CORBA::Boolean next_n (CORBA::ULong how_many, CosNaming::BindingList_out bl, CORBA::Environment &ACE_TRY_ENV) ACE_THROW_SPEC ((CORBA::SystemException)); - // This operation passes back at most <how_many> unseen bindings. - // True is returned if bindings were passed back, and false is - // returned if no bindings were passed back. + // This operation returns at most the requested number of bindings. void destroy (CORBA::Environment &ACE_TRY_ENV) ACE_THROW_SPEC ((CORBA::SystemException)); + // This operation destroys the iterator. // = Helper method. static int populate_binding (TABLE_ENTRY *hash_entry, CosNaming::Binding &b); - // Helper function used by TAO_*_Naming_Context and + // Helper function used by TAO_Hash_Naming_Context and // TAO_BindingIterator: populate a binding <b> with info contained // in <hash_entry>. Return 1 if everything went smoothly, 0 if an // allocation failed. private: int destroyed_; - // Flag indicating whether this iterator is still valid. (The - // iterator becomes invalid when <destroy> method has been invoked - // on it, or when <destroy> method has been invoked on the - // corresponding Naming Context.) This flag is necessary - // because immediate destruction of this servant might not be possible - // due to pending requests in the POA. - - TAO_Hash_Naming_Context *context_; - // Pointer to the Naming Context we are iterating over. We need - // this pointer to make sure the context is still valid before - // each iteration, and to decrement its reference count once we are <destroyed>. ITERATOR *hash_iter_; // A pointer to the hash map iterator. ACE_SYNCH_RECURSIVE_MUTEX &lock_; - // Lock passed on from Naming Context to serialize access to the + // Lock passed on from <TAO_NamingContext> to serialize access to the // internal data structure. PortableServer::POA_var poa_; - // Implement a different _default_POA(). + // Implement a different _default_POA() }; #if defined (ACE_TEMPLATES_REQUIRE_SOURCE) |