diff options
Diffstat (limited to 'TAO/orbsvcs/ImplRepo_Service/Iterator.cpp')
-rw-r--r-- | TAO/orbsvcs/ImplRepo_Service/Iterator.cpp | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/TAO/orbsvcs/ImplRepo_Service/Iterator.cpp b/TAO/orbsvcs/ImplRepo_Service/Iterator.cpp index 7e4182e08dc..abe512064a6 100644 --- a/TAO/orbsvcs/ImplRepo_Service/Iterator.cpp +++ b/TAO/orbsvcs/ImplRepo_Service/Iterator.cpp @@ -12,7 +12,36 @@ #include "Iterator.h" -ImR_Iterator::ImR_Iterator (CORBA::ULong n, Locator_Repository& repo, PortableServer::POA_ptr poa) + +ImR_AsyncIterator::ImR_AsyncIterator (CORBA::ULong start, + AsyncListManager *lister) + :count_ (start), + lister_ (lister->_add_ref ()) +{ +} + +void +ImR_AsyncIterator::next_n + (ImplementationRepository::AMH_ServerInformationIteratorResponseHandler_ptr _tao_rh, + CORBA::ULong how_many) +{ + this->count_ = this->lister_->list (_tao_rh, this->count_, how_many); +} + +void +ImR_AsyncIterator::destroy + (ImplementationRepository::AMH_ServerInformationIteratorResponseHandler_ptr _tao_rh) +{ + PortableServer::POA_var poa = this->lister_->poa (); + PortableServer::ObjectId_var oid = poa->servant_to_id (this); + poa->deactivate_object (oid.in()); + _tao_rh->destroy (); +} + +//---------------------------------------------------------------------------- +ImR_Iterator::ImR_Iterator (CORBA::ULong n, + Locator_Repository& repo, + PortableServer::POA_ptr poa) : repo_(repo) , count_(n) , poa_(poa) |