📄 demux_test_server.cpp
字号:
// demux_test_server.cpp,v 1.13 2003/11/04 08:13:00 dhinton Exp
// ============================================================================
//
// = LIBRARY
// TAO/performance-tests/Demux
//
// = FILENAME
// demux_test_server.cpp
//
// = AUTHOR
//
// Aniruddha Gokhale
//
// ============================================================================
#include "demux_test_server.h"
#include "tao/debug.h"
#include "ace/OS_NS_stdio.h"
#include "ace/OS_NS_string.h"
ACE_RCSID(CodeGen, demux_test_server, "demux_test_server.cpp,v 1.13 2003/11/04 08:13:00 dhinton Exp")
// Constructor
Demux_Test_Server::Demux_Test_Server (void)
: argc_ (0),
argv_ (0),
num_POAs_ (1),
num_objs_ (1),
poa_fp_ (0),
ior_fp_ (0),
servant_fp_ (0),
use_user_id_ (0),
use_transient_poas_ (0)
{
}
// destructor
Demux_Test_Server::~Demux_Test_Server (void)
{
ACE_OS::fclose (this->poa_fp_);
ACE_OS::fclose (this->ior_fp_);
}
//
// initialize the Demux_Test_Server
//
int
Demux_Test_Server::init (int argc, char *argv []
ACE_ENV_ARG_DECL)
{
printf ("here\n");
this->argc_ = argc;
this->argv_ = argv;
// Grab the ORB
ACE_TRY_EX(GET_ORB)
{
// get the underlying ORB
this->orb_ =
CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK_EX(GET_ORB);
}
ACE_CATCHANY
{
ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "ORB_init");
ACE_RE_THROW_EX (GET_ORB);
}
ACE_ENDTRY;
ACE_CHECK_RETURN (-1);
// Grab the ROOT POA
ACE_TRY_EX (GET_ROOT_POA)
{
CORBA::Object_var temp; // holder for the myriad of times we get
// an object which we then have to narrow.
// Get the Root POA
temp =
this->orb_->resolve_initial_references ("RootPOA"
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK_EX(GET_ROOT_POA);
if (CORBA::is_nil (temp.in ()))
ACE_ERROR_RETURN ((LM_ERROR,
"(%P|%t) Unable to get root poa reference.\n"),
1);
this->root_poa_ =
PortableServer::POA::_narrow (temp.in ()
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK_EX (GET_ROOT_POA);
}
ACE_CATCHANY
{
ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
"PortableServer::POA::_narrow");
ACE_RE_THROW_EX (GET_ROOT_POA);
}
ACE_ENDTRY;
ACE_CHECK_RETURN (-1);
// grab the POA Manager
ACE_TRY_EX (GET_POA_MGR)
{
this->poa_mgr_ =
this->root_poa_->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK_EX (GET_POA_MGR);
}
ACE_CATCHANY
{
ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
"RootPOA->the_POAManager");
ACE_RE_THROW_EX (GET_POA_MGR);
}
ACE_ENDTRY;
ACE_CHECK_RETURN (-1);
// now parse the rest of the arguments to determine the POA depth, the number
// of objects with each POA and other info
ACE_DEBUG ((LM_DEBUG,
"Before Parse Args\n"));
if (this->parse_args () == -1)
ACE_ERROR_RETURN ((LM_ERROR,
"(%N:%l) Demux_Test_Server::init - "
"parse_args failed\n"),
-1);
// init the Policies used by all the POAs
CORBA::PolicyList policies (2);
ACE_TRY_EX (POLICY)
{
// The id_uniqueness_policy by default is UNIQUE_ID. So each of our servants
// will have a unique name
policies.length (2);
// Choose the ID Policy for servants.
if (this->use_user_id_)
{
ACE_DEBUG ((LM_DEBUG,
"Using the USER_ID policy ... \n"));
policies[0] =
this->root_poa_->create_id_assignment_policy (PortableServer::USER_ID
ACE_ENV_ARG_PARAMETER);
}
else
{
ACE_DEBUG ((LM_DEBUG,
"Using the SYSTEM_ID policy ... \n"));
policies[0] =
this->root_poa_->create_id_assignment_policy (PortableServer::SYSTEM_ID
ACE_ENV_ARG_PARAMETER);
}
ACE_TRY_CHECK_EX (POLICY);
// Choose the LifeSpan Policy. Default is PERSISTENT.
if (this->use_transient_poas_)
{
ACE_DEBUG ((LM_DEBUG,
"Using the TRANSIENT Lifespan policy for the POAs\n"));
policies[1] =
this->root_poa_->create_lifespan_policy (PortableServer::TRANSIENT
ACE_ENV_ARG_PARAMETER);
}
else
{
ACE_DEBUG ((LM_DEBUG,
"Using the PERSISTENT Lifespan policy for the POAs\n"));
policies[1] =
this->root_poa_->create_lifespan_policy (PortableServer::PERSISTENT
ACE_ENV_ARG_PARAMETER);
}
ACE_TRY_CHECK_EX (POLICY);
}
ACE_CATCHANY
{
ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
"creating policy");
ACE_RE_THROW_EX (POLICY);
}
ACE_ENDTRY;
ACE_CHECK_RETURN (-1);
// now create a POA hierarchy of the desired depth and populate each POA with
// the specified number of objects. Finally, activate these objects.
char poa_file [128];
// open the file that has all the POA names in it
if ((this->poa_fp_ = ACE_OS::fopen ("poa_names_100.dat", "r")) == 0)
{
ACE_ERROR_RETURN ((LM_ERROR,
" (%P|%t) Unable to open POA file %s\n", poa_file),
-1);
}
// Open the file that has the servant names in it.
if ((this->servant_fp_ = ACE_OS::fopen ("names_file", "r")) == 0)
{
ACE_ERROR_RETURN ((LM_ERROR,
" (%P|%t) Unable to open POA file %s\n", poa_file),
-1);
}
// loop indices
CORBA::ULong i, j;
PortableServer::POA *prev_poa = this->root_poa_.in ();
for (i = 0; i < this->num_POAs_; i++)
{
char poa_name [128];
ACE_OS::memset (poa_name, 0, 128);
(void) fscanf (this->poa_fp_, "%s", poa_name);
ACE_TRY_EX (CREATE_POA)
{
this->child_poa_[i] = prev_poa->create_POA (poa_name,
this->poa_mgr_.in (),
policies
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK_EX (CREATE_POA);
}
ACE_CATCHANY
{
ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
"create_POA");
ACE_RE_THROW_EX (CREATE_POA);
}
ACE_ENDTRY;
ACE_CHECK_RETURN (-1);
for (j = 0; j < this->num_objs_; j++)
{
PortableServer::ObjectId_var id;
if (!use_user_id_)
{
// activate the object
ACE_TRY_EX (ACTIVATE_OBJ)
{
Demux_Test_i * demux_test_i_ptr;
ACE_NEW_RETURN (demux_test_i_ptr,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -