📄 demux_test_server.cpp
字号:
Demux_Test_i,
-1);
//id = this->child_poa_[i]->activate_object (&this->demux_test_[j],
id = this->child_poa_[i]->activate_object (demux_test_i_ptr
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK_EX (ACTIVATE_OBJ);
}
ACE_CATCHANY
{
ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
"poa->activate_obj");
ACE_RE_THROW_EX (ACTIVATE_OBJ);
}
ACE_ENDTRY;
ACE_CHECK_RETURN (-1);
// Get the IOR and output it to the file
ACE_TRY_EX (IOR)
{
CORBA::Object_var demux_var = this->child_poa_[i]->id_to_reference (id.in ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK_EX (IOR);
CORBA::String_var ior = this->orb_->object_to_string
(demux_var.in () ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK_EX (IOR);
ACE_OS::fprintf (this->ior_fp_, "%s\n", ior.in ());
}
ACE_CATCHANY
{
ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
"object_to_string");
ACE_RE_THROW_EX (IOR);
}
ACE_ENDTRY;
ACE_CHECK_RETURN (-1);
}
else
{
// Use the USER_ID policy.
char servant_name [128];
ACE_TRY
{
Demux_Test_i * demux_test_i_ptr;
ACE_NEW_RETURN (demux_test_i_ptr,
Demux_Test_i (this->child_poa_[i].in ()),
-1);
ACE_OS::memset (servant_name, 0, 128);
(void) fscanf (this->servant_fp_, "%s", servant_name);
ACE_DEBUG ((LM_DEBUG,
"Activating Servant with Name : %s\n",
servant_name));
PortableServer::ObjectId_var oid =
PortableServer::string_to_ObjectId (servant_name);
this->child_poa_[i]->activate_object_with_id (oid.in (),
demux_test_i_ptr
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
// Get Object reference for demux_test_i impl object.
CORBA::Object_var demux_var = demux_test_i_ptr->_this (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
CORBA::String_var ior = this->orb_->object_to_string
(demux_var.in () ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
ACE_OS::fprintf (this->ior_fp_, "%s\n", ior.in ());
}
ACE_CATCHANY
{
ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
"object_to_string");
ACE_RE_THROW;
}
ACE_ENDTRY;
ACE_CHECK_RETURN (-1);
}// end of if (!use_user_id_)
} // j loop
prev_poa = this->child_poa_[i].in ();
} // i loop
ACE_OS::fclose (this->ior_fp_);
ACE_OS::fclose (this->servant_fp_);
// now activate the POAs
ACE_TRY_EX (ACTIVATE)
{
this->poa_mgr_->activate (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK_EX (ACTIVATE);
}
ACE_CATCHANY
{
ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
"poa_mgr->activate");
ACE_RE_THROW_EX (ACTIVATE);
}
ACE_ENDTRY;
ACE_CHECK_RETURN (-1);
// success
return 0;
}
// parse command line arguments (if any).
int
Demux_Test_Server::parse_args (void)
{
ACE_Get_Opt get_opts (this->argc_, this->argv_, "df:o:p:ut");
int c;
while ((c = get_opts ()) != -1)
switch (c)
{
case 'd': // debug flag
TAO_debug_level++;
break;
case 'f':
this->ior_fp_ = ACE_OS::fopen (get_opts.opt_arg (), "w");
if (this->ior_fp_ == 0)
ACE_ERROR_RETURN ((LM_ERROR,
"Unable to open %s for writing: %p\n",
get_opts.opt_arg ()), -1);
break;
case 'o':
this->num_objs_ = ACE_OS::atoi (get_opts.opt_arg ());
if (this->num_objs_ > TAO_DEMUX_TEST_MAX_OBJS)
{
ACE_ERROR_RETURN ((LM_ERROR,
"%d exceeds the maximum of "
"%d objects per POA\n",
this->num_objs_,
TAO_DEMUX_TEST_MAX_OBJS),
-1);
}
break;
case 'p':
this->num_POAs_ = ACE_OS::atoi (get_opts.opt_arg ());
if (this->num_POAs_ > TAO_DEMUX_TEST_MAX_POAS)
{
ACE_ERROR_RETURN ((LM_ERROR,
"%d exceeds the maximum of "
"%d POAs\n",
this->num_objs_,
TAO_DEMUX_TEST_MAX_POAS),
-1);
}
break;
case 'u':
this->use_user_id_ = 1;
break;
case 't':
this->use_transient_poas_ = 1;
break;
case '?':
default:
ACE_ERROR_RETURN ((LM_ERROR,
"usage: %s"
" [-d]"
" [-o <num objects>]"
" [-p <num POAs>]"
" [-f <IOR file>]"
"\n", this->argv_ [0]),
-1);
}
if (!this->ior_fp_)
{
// open default IOR file
this->ior_fp_ = ACE_OS::fopen ("ior.dat", "w");
if (this->ior_fp_ == 0)
ACE_ERROR_RETURN ((LM_ERROR,
"Unable to open file ior.dat for writing\n"), -1);
}
return 0;
}
// grab a reference to the naming service so that we can register with it.
int
Demux_Test_Server::init_naming_service (void)
{
// Initialize the naming services
if (this->my_name_client_.init (this->orb_.in ()) == -1)
ACE_ERROR_RETURN ((LM_ERROR,
" (%P|%t) Unable to initialize "
"the ACE_Naming_Client. \n"),
-1);
// success
return 0;
}
// The main program for Demux_Test
int
Demux_Test_Server::run (ACE_ENV_SINGLE_ARG_DECL)
{
ACE_TRY
{
this->orb_->run (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
}
ACE_CATCHANY
{
ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
"run failed");
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) Demux_Test_Server::run - "
"Error running the server\n"),
-1);
}
ACE_ENDTRY;
ACE_TIMEPROBE_PRINT;
return 0;
}
#if defined (ACE_ENABLE_TIMEPROBES)
#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
template class ACE_Function_Timeprobe<ACE_Timeprobe<ACE_Null_Mutex> >;
template class ACE_Unbounded_Set<ACE_Event_Descriptions>;
template class ACE_Unbounded_Set_Iterator<ACE_Event_Descriptions>;
template class ACE_Node<ACE_Event_Descriptions>;
#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
#pragma instantiate ACE_Function_Timeprobe<ACE_Timeprobe<ACE_Null_Mutex> >
#pragma instantiate ACE_Unbounded_Set<ACE_Event_Descriptions>
#pragma instantiate ACE_Unbounded_Set_Iterator<ACE_Event_Descriptions>
#pragma instantiate ACE_Node<ACE_Event_Descriptions>
#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
#endif /* ACE_ENABLE_TIMEPROBES */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -