void Connection_Manager::find_receivers (void) { CosNaming::BindingIterator_var iterator; CosNaming::BindingList_var binding_list; const CORBA::ULong chunk = 100; // Get the list of receivers registered for this sender. this->receiver_context_->list (chunk, binding_list, iterator); // Add the receivers found in the bindinglist to the <receivers>. this->add_to_receivers (binding_list); if (!CORBA::is_nil (iterator.in ())) { CORBA::Boolean more = 1; // Check to see if there are more receivers listed. while (more) { more = iterator->next_n (chunk, binding_list); this->add_to_receivers (binding_list); } } }
int Iterator_Test::execute (TAO_Naming_Client &root_context) { try { // Instantiate four dummy objects. My_Test_Object *impl = new My_Test_Object; Test_Object_var obj = impl->_this (); impl->_remove_ref (); // Bind objects to the naming context. CosNaming::Name name1; name1.length (1); name1[0].id = CORBA::string_dup ("foo1"); CosNaming::Name name2; name2.length (1); name2[0].id = CORBA::string_dup ("foo2"); CosNaming::Name name3; name3.length (1); name3[0].id = CORBA::string_dup ("foo3"); CosNaming::Name name4; name4.length (1); name4[0].id = CORBA::string_dup ("foo4"); root_context->bind (name1, obj.in ()); root_context->bind (name2, obj.in ()); root_context->bind (name3, obj.in ()); root_context->bind (name4, obj.in ()); // List the content of the Naming Context. CosNaming::BindingIterator_var iter; CosNaming::BindingList_var bindings_list; root_context->list (1, bindings_list.out (), iter.out ()); if (CORBA::is_nil (iter.in ()) || bindings_list->length () != 1 || bindings_list[0u].binding_type != CosNaming::nobject) ACE_ERROR_RETURN ((LM_ERROR, "CosNaming::list does not function properly\n"), -1); ACE_DEBUG ((LM_DEBUG, "First binding: %s\n", bindings_list[0u].binding_name[0u].id.in ())); // Invoke operations on the iterator. CosNaming::Binding_var binding; iter->next_one (binding.out ()); if (binding->binding_type != CosNaming::nobject) ACE_ERROR_RETURN ((LM_ERROR, "CosNaming::next_one does not function properly\n"), -1); ACE_DEBUG ((LM_DEBUG, "Second binding: %s\n", binding->binding_name[0].id.in ())); iter->next_n (2, bindings_list.out ()); if (bindings_list->length () != 2 || bindings_list[0u].binding_type != CosNaming::nobject || bindings_list[1u].binding_type != CosNaming::nobject) ACE_ERROR_RETURN ((LM_ERROR, "CosNaming::BindingIterator does not function properly\n"), -1); ACE_DEBUG ((LM_DEBUG, "Third binding: %s\n" "Fourth binding: %s\n", bindings_list[0u].binding_name[0].id.in (), bindings_list[1u].binding_name[0].id.in ())); // We already iterated over all the bindings, so the following // should return false. CORBA::Boolean result = iter->next_one (binding.out ()); if (result) ACE_ERROR_RETURN ((LM_ERROR, "CosNaming::BindingIterator does not function properly\n"), -1); iter->destroy (); } catch (const CORBA::Exception& ex) { ex._tao_print_exception ( "Unexpected exception in Iterator test"); return -1; } return 0; }