📄 client.cpp
字号:
ACE_DECLARE_NEW_CORBA_ENV;
ACE_TRY
{
// Dummy object instantiation.
My_Test_Object *test_obj_impl = new My_Test_Object (CosNaming_Client::OBJ1_ID);
Test_Object_var test_obj_ref =
test_obj_impl->_this (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
// Give ownership of this object to POA.
test_obj_impl->_remove_ref (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
// Bind an object to the Naming Context.
CosNaming::Name test_name;
test_name.length (1);
test_name[0].id = CORBA::string_dup ("Foo");
root_context->bind (test_name,
test_obj_ref.in ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
ACE_DEBUG ((LM_DEBUG,
"Bound name OK\n"));
// Resolve the object from the Naming Context.
CORBA::Object_var result_obj_ref =
root_context->resolve (test_name
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
Test_Object_var result_object =
Test_Object::_narrow (result_obj_ref.in ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
if (!CORBA::is_nil (result_object.in ()))
{
CORBA::Short id = result_object->id (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
if (id == CosNaming_Client::OBJ1_ID)
ACE_DEBUG ((LM_DEBUG, "Resolved name OK\n"));
}
// Unbind the object from the Naming Context.
root_context->unbind (test_name
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
ACE_DEBUG ((LM_DEBUG,
"Unbound name OK\n"));
}
ACE_CATCHANY
{
ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Unexpected exception in Simple test");
return -1;
}
ACE_ENDTRY;
ACE_CHECK_RETURN (-1);
return 0;
}
int
Tree_Test::execute (TAO_Naming_Client &root_context)
{
ACE_DECLARE_NEW_CORBA_ENV;
ACE_TRY
{
// Create a tree of contexts: root->level1->level2. Bind object
// foo under context level2.
// Bind level1 context under root.
CosNaming::Name level1;
level1.length (1);
level1[0].id = CORBA::string_dup ("level1_context");
CosNaming::NamingContext_var level1_context;
level1_context = root_context->bind_new_context (level1
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
// Create a new context.
CosNaming::NamingContext_var level2_context;
level2_context = root_context->new_context (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
// Instantiate a dummy object and bind it under the new context.
My_Test_Object *impl1 =
new My_Test_Object (CosNaming_Client::OBJ1_ID);
Test_Object_var obj1 = impl1->_this (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
impl1->_remove_ref (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
CosNaming::Name obj_name;
obj_name.length (1);
obj_name[0].id = CORBA::string_dup ("foo");
level2_context->bind (obj_name, obj1.in ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
// Bind the context we just created under level1.
CosNaming::Name level2 (level1);
level2.length (2);
level2[1].id = CORBA::string_dup ("level2_context");
root_context->bind_context (level2,
level2_context.in ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
// Resolve and unbind level1/level2/foo, and bind it back.
CosNaming::Name test_name (level2);
test_name.length (3);
test_name[2].id = obj_name[0].id;
CORBA::Object_var result_obj_ref =
root_context->resolve (test_name
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
Test_Object_var result_object =
Test_Object::_narrow (result_obj_ref.in ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
if (CORBA::is_nil (result_object.in ()))
ACE_ERROR_RETURN ((LM_ERROR,
"Problems with resolving foo in Tree Test - nil object ref.\n"),
-1);
CORBA::Short id = result_object->id (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
if (id != CosNaming_Client::OBJ1_ID)
ACE_ERROR_RETURN ((LM_ERROR,
"Problems with resolving foo in Tree Test - wrong id.\n"),
-1);
// Unbind the object from the Naming Context and bind it back
// in.
root_context->unbind (test_name
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
root_context->bind (test_name,
obj1.in ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
// Create new context and rebind under the name level1/level2.
CosNaming::NamingContext_var new_level2_context;
new_level2_context =
root_context->new_context (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
root_context->rebind_context (level2,
new_level2_context.in ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
// Bind, resolve, rebind, and resolve foo under level1/level2.
root_context->bind (test_name,
obj1.in ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
result_obj_ref = root_context->resolve (test_name
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
result_object = Test_Object::_narrow (result_obj_ref.in ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
CORBA::Short obj_id = result_object->id (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
if (CORBA::is_nil (result_object.in ())
|| !(obj_id == CosNaming_Client::OBJ1_ID))
ACE_ERROR_RETURN ((LM_ERROR,
"Problems in the Tree Test\n"),
-1);
My_Test_Object *impl2 =
new My_Test_Object (CosNaming_Client::OBJ2_ID);
Test_Object_var obj2 = impl2->_this (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
impl2->_remove_ref (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
root_context->rebind (test_name,
obj2.in ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
result_obj_ref = root_context->resolve (test_name
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
result_object = Test_Object::_narrow (result_obj_ref.in ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
obj_id = result_object->id (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
if (CORBA::is_nil (result_object.in ())
|| !( obj_id == CosNaming_Client::OBJ2_ID))
ACE_ERROR_RETURN ((LM_ERROR,
"Problems with rebind in Tree Test\n"),
-1);
}
ACE_CATCHANY
{
ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Unexpected exception in Tree test");
return -1;
}
ACE_ENDTRY;
ACE_CHECK_RETURN (-1);
ACE_DEBUG ((LM_DEBUG,
"All functions work properly \n"));
return 0;
}
int
Exceptions_Test::execute (TAO_Naming_Client &root_context)
{
ACE_DECLARE_NEW_CORBA_ENV;
ACE_TRY
{
// Set things up.
// Create a tree of contexts root->level1->level2.
CosNaming::Name context_name;
context_name.length (1);
context_name[0].id = CORBA::string_dup ("level1_context");
CosNaming::NamingContext_var level1_context;
level1_context = root_context->bind_new_context (context_name
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
context_name[0].id = CORBA::string_dup ("level2_context");
CosNaming::NamingContext_var level2_context;
level2_context = level1_context->bind_new_context (context_name
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
// Bind a dummy object foo under each 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");
root_context->bind (object_name,
obj.in ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
level1_context->bind (object_name,
obj.in ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
level2_context->bind (object_name,
obj.in ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
// Run exceptions tests.
invalid_name_test (root_context
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
already_bound_test (root_context
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
already_bound_test2 (root_context
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
not_found_test (root_context
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
not_found_test2 (root_context
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
not_found_test3 (root_context
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
}
ACE_CATCHANY
{
ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Unexpected exception in Exceptions test");
return -1;
}
ACE_ENDTRY;
ACE_CHECK_RETURN (-1);
return 0;
}
void
Exceptions_Test::invalid_name_test (TAO_Naming_Client &root_context
ACE_ENV_ARG_DECL)
{
ACE_TRY
{
CosNaming::Name test_name;
test_name.length (0);
root_context->resolve (test_name
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
ACE_DEBUG ((LM_DEBUG, "Invalid name test failed\n"));
}
ACE_CATCH (CosNaming::NamingContext::InvalidName, ex)
{
ACE_DEBUG ((LM_DEBUG,
"InvalidName exception works properly\n"));
}
ACE_CATCHANY
{
ACE_DEBUG ((LM_DEBUG, "Invalid name test failed\n"));
ACE_RE_THROW;
}
ACE_ENDTRY;
ACE_CHECK;
}
void
Exceptions_Test::already_bound_test (TAO_Naming_Client &root_context
ACE_ENV_ARG_DECL)
{
ACE_TRY
{
CosNaming::Name test_name;
test_name.length (1);
test_name[0].id = CORBA::string_dup ("foo");
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;
root_context->bind (test_name,
obj.in ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
ACE_DEBUG ((LM_DEBUG, "Already bound (case 1) test failed\n"));
}
ACE_CATCH (CosNaming::NamingContext::AlreadyBound, ex)
{
ACE_DEBUG ((LM_DEBUG,
"AlreadyBound exception (case 1) works properly\n"));
}
ACE_CATCHANY
{
ACE_DEBUG ((LM_DEBUG, "Already bound (case 1) test failed\n"));
ACE_RE_THROW;
}
ACE_ENDTRY;
ACE_CHECK;
}
void
Exceptions_Test::already_bound_test2 (TAO_Naming_Client &root_context
ACE_ENV_ARG_DECL)
{
ACE_TRY
{
CosNaming::Name test_name;
test_name.length (2);
test_name[0].id = CORBA::string_dup ("level1_context");
test_name[1].id = CORBA::string_dup ("foo");
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;
root_context->bind (test_name,
obj.in ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
ACE_DEBUG ((LM_DEBUG, "Already bound (case 2) test failed\n"));
}
ACE_CATCH (CosNaming::NamingContext::AlreadyBound, ex)
{
ACE_DEBUG ((LM_DEBUG,
"AlreadyBound exception (case 2) works properly\n"));
}
ACE_CATCHANY
{
ACE_DEBUG ((LM_DEBUG, "Already bound (case 2) test failed\n"));
ACE_RE_THROW;
}
ACE_ENDTRY;
ACE_CHECK;
}
void
Exceptions_Test::not_found_test (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 ("level2_context");
test_name[2].id = CORBA::string_dup ("bar");
root_context->unbind (test_name
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
ACE_DEBUG ((LM_DEBUG, "Not found test failed\n"));
}
ACE_CATCH (CosNaming::NamingContext::NotFound, ex)
{
if (ex.why == CosNaming::NamingContext::missing_node &&
ex.rest_of_name.length () == 1
&& ACE_OS::strcmp (ex.rest_of_name[0].id.in (),
"bar") == 0)
ACE_DEBUG ((LM_DEBUG,
"NotFound exception (case 1) works properly\n"));
else
ACE_DEBUG ((LM_DEBUG,
"NotFound exception (case 1)"
" - parameters aren't set correctly\n"));
}
ACE_CATCHANY
{
ACE_DEBUG ((LM_DEBUG, "Not found test failed\n"));
ACE_RE_THROW;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -