00001 // -*- C++ -*- 00002 //============================================================================= 00003 /** 00004 * @file Iterator.h 00005 * 00006 * Iterator.h,v 1.9 2005/07/04 08:55:12 jwillemsen Exp 00007 * 00008 * @brief This file declares ImR's iterator. 00009 * 00010 * @author Darrell Brunsch <brunsch@cs.wustl.edu> 00011 */ 00012 //============================================================================= 00013 00014 #ifndef IMR_ITERATOR_H 00015 #define IMR_ITERATOR_H 00016 00017 #include "Locator_Repository.h" 00018 #include "tao/PortableServer/PortableServer.h" 00019 #include "tao/ImR_Client/ImplRepoS.h" 00020 00021 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00022 # pragma once 00023 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00024 00025 /** 00026 * @class ImR_Iterator 00027 * 00028 * @brief The Iterator for servers in the ImR. 00029 * 00030 */ 00031 class ImR_Iterator 00032 : public POA_ImplementationRepository::ServerInformationIterator 00033 { 00034 public: 00035 ImR_Iterator (CORBA::ULong n, Locator_Repository& repo, PortableServer::POA_ptr poa); 00036 00037 /// Returns the next list of up to <how_many> servers. If empty, will return 00038 /// false. 00039 virtual CORBA::Boolean next_n ( 00040 CORBA::ULong how_many, 00041 ImplementationRepository::ServerInformationList_out server_list 00042 ACE_ENV_ARG_DECL_WITH_DEFAULTS 00043 ) 00044 ACE_THROW_SPEC ((CORBA::SystemException)); 00045 00046 virtual void destroy (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) 00047 ACE_THROW_SPEC ((CORBA::SystemException)); 00048 00049 private: 00050 Locator_Repository& repo_; 00051 CORBA::ULong count_; 00052 PortableServer::POA_ptr poa_; 00053 }; 00054 00055 #endif /* IMR_ITERATOR_H */