summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/ImplRepo_Service/Iterator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/ImplRepo_Service/Iterator.cpp')
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/Iterator.cpp31
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)