00001 // -*- C++ -*- 00002 //============================================================================= 00003 /** 00004 * @file Iterator.h 00005 * 00006 * $Id: Iterator.h 77020 2007-02-12 13:56:49Z johnnyw $ 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 ); 00043 00044 virtual void destroy (void); 00045 00046 private: 00047 Locator_Repository& repo_; 00048 CORBA::ULong count_; 00049 PortableServer::POA_ptr poa_; 00050 }; 00051 00052 #endif /* IMR_ITERATOR_H */