📄 client.cpp
字号:
ACE_ENDTRY;
ACE_CHECK;
}
void
Exceptions_Test::not_found_test2 (TAO_Naming_Client &root_context
ACE_ENV_ARG_DECL)
{
ACE_TRY
{
CosNaming::Name test_name;
test_name.length (3);
test_name[0].id = CORBA::string_dup ("level1_context");
test_name[1].id = CORBA::string_dup ("level3_context");
test_name[2].id = CORBA::string_dup ("foo");
root_context->unbind (test_name
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
ACE_DEBUG ((LM_DEBUG, "Unbind test failed\n"));
}
ACE_CATCH (CosNaming::NamingContext::NotFound, ex)
{
if (ex.why == CosNaming::NamingContext::missing_node
&& ex.rest_of_name.length () == 2
&& ACE_OS::strcmp (ex.rest_of_name[0].id.in (),
"level3_context") == 0
&& ACE_OS::strcmp (ex.rest_of_name[1].id.in (),
"foo") == 0)
ACE_DEBUG ((LM_DEBUG,
"NotFound exception (case 2) works properly\n"));
else
ACE_DEBUG ((LM_DEBUG,
"NotFound exception (case 2)"
" - parameters aren't set correctly\n"));
}
ACE_CATCHANY
{
ACE_DEBUG ((LM_DEBUG, "Unbind test failed\n"));
ACE_RE_THROW;
}
ACE_ENDTRY;
ACE_CHECK;
}
void
Exceptions_Test::not_found_test3 (TAO_Naming_Client &root_context
ACE_ENV_ARG_DECL)
{
ACE_TRY
{
CosNaming::Name test_name;
test_name.length (3);
test_name[0].id = CORBA::string_dup ("level1_context");
test_name[1].id = CORBA::string_dup ("foo");
test_name[2].id = CORBA::string_dup ("foo");
root_context->unbind (test_name ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
ACE_DEBUG ((LM_DEBUG, "Not found (case 3) test failed - no exception was thrown\n"));
}
ACE_CATCH (CosNaming::NamingContext::NotFound, ex)
{
if (ex.why == CosNaming::NamingContext::not_context
&& ex.rest_of_name.length () == 2
&& ACE_OS::strcmp (ex.rest_of_name[0].id.in (),
"foo") == 0
&& ACE_OS::strcmp (ex.rest_of_name[1].id.in (),
"foo") == 0)
ACE_DEBUG ((LM_DEBUG,
"NotFound exception (case 3) works properly\n"));
else
ACE_DEBUG ((LM_DEBUG,
"NotFound exception (case 3)"
" - parameters aren't set correctly\n"));
}
ACE_CATCHANY
{
ACE_DEBUG ((LM_DEBUG, "Not found (case 3) test failed\n"));
ACE_RE_THROW;
}
ACE_ENDTRY;
ACE_CHECK;
}
int
Iterator_Test::execute (TAO_Naming_Client &root_context)
{
ACE_DECLARE_NEW_CORBA_ENV;
ACE_TRY
{
// Instantiate four dummy objects.
My_Test_Object *impl = new My_Test_Object;
Test_Object_var obj = impl->_this (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
impl->_remove_ref (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
// 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 ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
root_context->bind (name2,
obj.in ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
root_context->bind (name3,
obj.in ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
root_context->bind (name4,
obj.in ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
// 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 ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
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 ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
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 () ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
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 ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
if (result)
ACE_ERROR_RETURN ((LM_ERROR,
"CosNaming::BindingIterator does not function properly\n"),
-1);
iter->destroy (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
}
ACE_CATCHANY
{
ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Unexpected exception in Iterator test");
return -1;
}
ACE_ENDTRY;
ACE_CHECK_RETURN (-1);
return 0;
}
int
Destroy_Test::execute (TAO_Naming_Client &root_context)
{
ACE_DECLARE_NEW_CORBA_ENV;
ACE_TRY
{
// Create a context and bind an object under it.
CosNaming::NamingContext_var my_context;
my_context = root_context->new_context (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
// Bind a dummy object foo under my_context.
My_Test_Object *impl = new My_Test_Object;
Test_Object_var obj = impl->_this (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
impl->_remove_ref (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
CosNaming::Name object_name;
object_name.length (1);
object_name[0].id = CORBA::string_dup ("foo");
my_context->bind (object_name,
obj.in ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
// Do the testing.
not_empty_test (my_context
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
my_context->unbind (object_name ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
my_context->destroy (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
not_exist_test (my_context
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
}
ACE_CATCHANY
{
ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Unexpected exception in Destroy test");
return -1;
}
ACE_ENDTRY;
ACE_CHECK_RETURN (-1);
return 0;
}
void
Destroy_Test::not_empty_test (CosNaming::NamingContext_var &ref
ACE_ENV_ARG_DECL)
{
ACE_TRY
{
ref->destroy (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
}
ACE_CATCH (CosNaming::NamingContext::NotEmpty, ex)
{
ACE_DEBUG ((LM_DEBUG,
"NotEmpty exception works properly\n"));
}
ACE_ENDTRY;
ACE_CHECK;
}
void
Destroy_Test::not_exist_test (CosNaming::NamingContext_var &ref
ACE_ENV_ARG_DECL)
{
ACE_TRY
{
ref->destroy (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
}
ACE_CATCH (CORBA::OBJECT_NOT_EXIST, ex)
{
ACE_DEBUG ((LM_DEBUG,
"Destroy works properly\n"));
}
ACE_ENDTRY;
ACE_CHECK;
}
Persistent_Test_Begin::Persistent_Test_Begin (CORBA::ORB_ptr orb,
FILE * ior_output_file)
: orb_ (orb),
file_ (ior_output_file)
{
}
Persistent_Test_Begin::~Persistent_Test_Begin (void)
{
}
int
Persistent_Test_Begin::execute (TAO_Naming_Client &root_context)
{
ACE_DECLARE_NEW_CORBA_ENV;
ACE_TRY
{
// Create a name structure we will reuse.
CosNaming::Name test_name;
test_name.length (1);
test_name[0].id = CORBA::string_dup ("level1");
// Create and bind a naming context under the <root> context.
CosNaming::NamingContext_var level1_context =
root_context->bind_new_context (test_name
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
// Create and bind a naming context under <level1> context.
test_name[0].id = CORBA::string_dup ("level2");
CosNaming::NamingContext_var level2_context =
level1_context->bind_new_context (test_name
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
// Log the ior of <level1_context> for use by <Persistent_Test_End>.
CORBA::String_var ior =
orb_->object_to_string (level1_context.in () ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
ACE_OS::fprintf (this->file_,
"%s",
ior.in ());
ACE_OS::fclose (this->file_);
ACE_DEBUG ((LM_DEBUG, "Persistent Naming test (part 1) OK.\n"));
}
ACE_CATCHANY
{
ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
"Unexpected exception in Persistent Test (part 1)");
return -1;
}
ACE_ENDTRY;
ACE_CHECK_RETURN (-1);
return 0;
}
Persistent_Test_End::Persistent_Test_End (CORBA::ORB_ptr orb,
const char *ior)
: orb_ (orb),
ior_ (ior)
{
}
Persistent_Test_End::~Persistent_Test_End (void)
{
}
int
Persistent_Test_End::execute (TAO_Naming_Client &root_context)
{
ACE_DECLARE_NEW_CORBA_ENV;
ACE_TRY
{
// Create a name structure we will reuse.
CosNaming::Name test_name;
test_name.length (1);
test_name[0].id = CORBA::string_dup ("level2");
// Convert stringified ior we got from <Persistent_Test_Begin>
// for <level1> Naming Context to Naming Context reference.
CORBA::Object_var obj =
orb_->string_to_object (ior_ ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
CosNaming::NamingContext_var level1_context =
CosNaming::NamingContext::_narrow (obj.in () ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
if (CORBA::is_nil (level1_context.in ()))
ACE_ERROR_RETURN ((LM_ERROR,
"Cannot narrow object to Naming Context\n"),
-1);
// Resolve for <level2> context through the persistent ior we
// got from part 1 of this test.
obj = level1_context->resolve (test_name ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
// Now, resolve for <level2> context using the <root> context
// reference which we obtained through <resolve_initial_references>.
test_name.length (2);
test_name[0].id = CORBA::string_dup ("level1");
test_name[1].id = CORBA::string_dup ("level2");
CORBA::Object_var obj2 =
root_context->resolve (test_name ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
// Make sure we got the same answer through both methods.
if (obj2->_is_equivalent (obj.in ()))
ACE_DEBUG ((LM_DEBUG, "Persistent Naming test (part 2) OK.\n"));
}
ACE_CATCHANY
{
ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
"Unexpected exception in Persistent Test (part 2)");
return -1;
}
ACE_ENDTRY;
ACE_CHECK_RETURN (-1);
return 0;
}
// This function runs the test.
int
main (int argc, char **argv)
{
CosNaming_Client cosnaming_client;
if (cosnaming_client.init (argc, argv) == -1)
return 1;
return cosnaming_client.run ();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -