📄 client.cpp
字号:
}
void
Client::set_client_protocols_policies (int debug
ACE_ENV_ARG_DECL)
{
CORBA::PolicyList policies;
int result =
get_protocols ("client",
protocols_file,
this->rt_orb_.in (),
policies,
debug
ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
if (result != 0)
{
ACE_ERROR ((LM_ERROR,
"Error in parsing protocols data file: %s\n",
protocols_file));
return;
}
this->policy_manager_->set_policy_overrides (policies,
CORBA::ADD_OVERRIDE
ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
}
void
Client::set_priority_bands (int debug
ACE_ENV_ARG_DECL)
{
CORBA::PolicyList policies;
int result =
get_priority_bands ("client",
bands_file,
this->rt_orb_.in (),
policies,
debug
ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
if (result != 0)
{
ACE_ERROR ((LM_ERROR,
"Error in parsing bands data file: %s\n",
bands_file));
return;
}
this->policy_manager_->set_policy_overrides (policies,
CORBA::ADD_OVERRIDE
ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
}
void
Client::set_private_connection_policies (ACE_ENV_SINGLE_ARG_DECL)
{
CORBA::PolicyList policies;
policies.length (1);
policies[0] =
this->rt_orb_->create_private_connection_policy (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK;
this->policy_manager_->set_policy_overrides (policies,
CORBA::ADD_OVERRIDE
ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
}
void
Client::reset_policies (ACE_ENV_SINGLE_ARG_DECL)
{
CORBA::PolicyList empty_policies;
this->policy_manager_->set_policy_overrides (empty_policies,
CORBA::SET_OVERRIDE
ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
}
class Task : public ACE_Task_Base
{
public:
Task (ACE_Thread_Manager &thread_manager,
CORBA::ORB_ptr orb);
int svc (void);
CORBA::ORB_var orb_;
};
Task::Task (ACE_Thread_Manager &thread_manager,
CORBA::ORB_ptr orb)
: ACE_Task_Base (&thread_manager),
orb_ (CORBA::ORB::_duplicate (orb))
{
}
int
Task::svc (void)
{
ACE_TRY_NEW_ENV
{
CORBA::Object_var object =
this->orb_->resolve_initial_references ("RTORB"
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
RTCORBA::RTORB_var rt_orb =
RTCORBA::RTORB::_narrow (object.in ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
object =
this->orb_->resolve_initial_references ("ORBPolicyManager"
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
CORBA::PolicyManager_var policy_manager =
CORBA::PolicyManager::_narrow (object.in ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
object =
this->orb_->resolve_initial_references ("RTCurrent"
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
RTCORBA::Current_var current =
RTCORBA::Current::_narrow (object.in ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
current->the_priority (0
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
object =
this->orb_->string_to_object (ior
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
test_var test =
test::_narrow (object.in ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
Client client (test.in (),
this->orb_.in (),
current.in (),
rt_orb.in (),
policy_manager.in ());
client.vanilla_invocations (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
client.set_private_connection_policies (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
client.vanilla_invocations (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
client.reset_policies (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
client.set_client_protocols_policies (debug
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
client.vanilla_invocations (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
client.set_private_connection_policies (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
client.vanilla_invocations (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
client.reset_policies (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
client.set_priority_bands (debug
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
client.priority_invocations (debug
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
client.set_private_connection_policies (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
client.priority_invocations (debug
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
client.reset_policies (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
client.set_priority_bands (debug
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
client.set_client_protocols_policies (0
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
client.priority_invocations (0
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
client.set_private_connection_policies (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
client.priority_invocations (debug
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
client.reset_policies (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
if (shutdown_server)
{
test->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
}
}
ACE_CATCHANY
{
ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Error!");
return -1;
}
ACE_ENDTRY;
return 0;
}
int
main (int argc, char **argv)
{
ACE_DECLARE_NEW_CORBA_ENV;
ACE_TRY
{
CORBA::ORB_var orb =
CORBA::ORB_init (argc,
argv,
0
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
int parse_args_result =
parse_args (argc, argv);
if (parse_args_result != 0)
return parse_args_result;
// Make sure we can support multiple priorities that are required
// for this test.
check_supported_priorities (orb.in());
// Thread Manager for managing task.
ACE_Thread_Manager thread_manager;
// Create task.
Task task (thread_manager,
orb.in ());
// Task activation flags.
long flags =
THR_NEW_LWP |
THR_JOINABLE |
orb->orb_core ()->orb_params ()->thread_creation_flags ();
// Activate task.
int result =
task.activate (flags);
if (result == -1)
{
if (errno == EPERM)
{
ACE_ERROR_RETURN ((LM_ERROR,
"Cannot create thread with scheduling policy %s\n"
"because the user does not have the appropriate privileges, terminating program....\n"
"Check svc.conf options and/or run as root\n",
sched_policy_name (orb->orb_core ()->orb_params ()->ace_sched_policy ())),
2);
}
else
// Unexpected error.
ACE_ASSERT (0);
}
// Wait for task to exit.
result =
thread_manager.wait ();
ACE_ASSERT (result != -1);
}
ACE_CATCHANY
{
ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Error!");
return -1;
}
ACE_ENDTRY;
ACE_CHECK_RETURN (-1);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -