summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcoryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1998-01-23 22:48:17 +0000
committercoryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1998-01-23 22:48:17 +0000
commit4689ce6d718bd0e4cf0220845a80861169b10b2d (patch)
tree7924d6cc772abe5ca9ed14cf76950ed8a6b91390
parentea5dd453e3472c812b7be366255542f5647afc71 (diff)
downloadATCD-4689ce6d718bd0e4cf0220845a80861169b10b2d.tar.gz
ChangeLogTag:Fri Jan 23 16:43:12 1998 Carlos O'Ryan <coryan@cs.wustl.edu>
-rw-r--r--TAO/ChangeLog-98c26
-rw-r--r--TAO/orbsvcs/Dump_Schedule/Dump_Schedule.cpp43
-rw-r--r--TAO/orbsvcs/Event_Service/Event_Channel.cpp17
-rw-r--r--TAO/orbsvcs/Event_Service/Event_Channel.i3
-rw-r--r--TAO/orbsvcs/Event_Service/Event_Service.cpp66
-rw-r--r--TAO/orbsvcs/Naming_Service/CosNaming_i.cpp9
-rw-r--r--TAO/orbsvcs/Naming_Service/CosNaming_i.h3
-rw-r--r--TAO/orbsvcs/Naming_Service/Naming_Service.cpp194
-rw-r--r--TAO/orbsvcs/Scheduling_Service/Config_Scheduler.cpp3
-rw-r--r--TAO/orbsvcs/Scheduling_Service/Scheduling_Service.cpp60
-rw-r--r--TAO/orbsvcs/orbsvcs/Runtime_Scheduler.cpp3
-rw-r--r--TAO/orbsvcs/orbsvcs/Scheduler_Factory.cpp15
-rw-r--r--TAO/orbsvcs/tests/Event_Latency/Event_Latency.cpp112
-rw-r--r--TAO/orbsvcs/tests/Event_Latency/Event_Latency.h4
-rw-r--r--TAO/tests/Cubit/TAO/IDL_Cubit/svr.cpp12
15 files changed, 320 insertions, 250 deletions
diff --git a/TAO/ChangeLog-98c b/TAO/ChangeLog-98c
index 51ae23e126d..0caa5ff31aa 100644
--- a/TAO/ChangeLog-98c
+++ b/TAO/ChangeLog-98c
@@ -1,3 +1,29 @@
+Fri Jan 23 16:43:12 1998 Carlos O'Ryan <coryan@cs.wustl.edu>
+
+ * orbsvcs/Dump_Schedule/Dump_Schedule.cpp:
+ * orbsvcs/Event_Service/Event_Channel.cpp:
+ * orbsvcs/Event_Service/Event_Channel.i:
+ * orbsvcs/Event_Service/Event_Service.cpp:
+ * orbsvcs/Naming_Service/CosNaming_i.cpp:
+ * orbsvcs/Naming_Service/CosNaming_i.h:
+ * orbsvcs/Naming_Service/Naming_Service.cpp:
+ * orbsvcs/Scheduling_Service/Config_Scheduler.cpp:
+ * orbsvcs/Scheduling_Service/Scheduling_Service.cpp:
+ * orbsvcs/orbsvcs/Runtime_Scheduler.cpp:
+ * orbsvcs/orbsvcs/Scheduler_Factory.cpp:
+ * orbsvcs/tests/Event_Latency/Event_Latency.cpp:
+ * orbsvcs/tests/Event_Latency/Event_Latency.h:
+ "Ported" the orbsvcs and the Event_Latency test to POA, with
+ little success though, things will compile and it seems that the
+ Naming_Service and Scheduling_Services run properly, but
+ Event_Service does not.
+ We use a nested POA with "PERSISTENT" lifespan policy because it
+ is easier to set an enviroment variable or command line to the
+ NameService IOR.
+
+ * tests/Cubit/TAO/IDL_Cubit/svr.cpp:
+ Removed some extra (and unwanted) code.
+
Fri Jan 23 14:47:18 1998 Chris Cleeland <cleeland@cs.wustl.edu>
* tests/POA/{FindPOA,RootPOA,NewPOA}/Makefile: Added
diff --git a/TAO/orbsvcs/Dump_Schedule/Dump_Schedule.cpp b/TAO/orbsvcs/Dump_Schedule/Dump_Schedule.cpp
index dfcd8010711..fc8372e0691 100644
--- a/TAO/orbsvcs/Dump_Schedule/Dump_Schedule.cpp
+++ b/TAO/orbsvcs/Dump_Schedule/Dump_Schedule.cpp
@@ -18,29 +18,39 @@ int main (int argc, char *argv[])
TAO_TRY
{
// Initialize ORB.
- CORBA::ORB_ptr orb =
- CORBA::ORB_init (argc, argv, "dump_schedule", TAO_TRY_ENV);
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc, argv, "internet", TAO_TRY_ENV);
TAO_CHECK_ENV;
- CORBA::POA_ptr poa =
- orb->POA_init(argc, argv, "POA");
- if (poa == 0)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- " (%P|%t) Unable to initialize the POA.\n"),
- 1);
- }
+ CORBA::Object_var poa_object =
+ orb->resolve_initial_references("RootPOA");
+ if (poa_object == 0)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ " (%P|%t) Unable to initialize the POA.\n"),
+ 1);
- CORBA::Object_ptr objref =
- orb->resolve_initial_references ("NameService");
+ PortableServer::POA_var root_poa =
+ PortableServer::POA::_narrow (poa_object, TAO_TRY_ENV);
+ TAO_CHECK_ENV;
+
+ PortableServer::POAManager_var poa_manager =
+ root_poa->the_POAManager (TAO_TRY_ENV);
TAO_CHECK_ENV;
+
+ CORBA::Object_var naming_obj =
+ orb->resolve_initial_references ("NameService");
+ if (naming_obj == 0)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ " (%P|%t) Unable to initialize the POA.\n"),
+ 1);
+
CosNaming::NamingContext_var naming_context =
- CosNaming::NamingContext::_narrow (objref, TAO_TRY_ENV);
+ CosNaming::NamingContext::_narrow (naming_obj, TAO_TRY_ENV);
TAO_CHECK_ENV;
- ACE_Scheduler_Factory::use_config (naming_context.ptr ());
+ ACE_Scheduler_Factory::use_config (naming_context.in ());
- RtecScheduler::RT_Info_Set* infos;
+ RtecScheduler::RT_Info_Set_var infos;
ACE_Scheduler_Factory::server ()->compute_scheduling
(ACE_Sched_Params::priority_min (ACE_SCHED_FIFO,
ACE_SCOPE_THREAD),
@@ -49,9 +59,8 @@ int main (int argc, char *argv[])
infos, TAO_TRY_ENV);
TAO_CHECK_ENV;
- ACE_Scheduler_Factory::dump_schedule (*infos,
+ ACE_Scheduler_Factory::dump_schedule (infos.in (),
"Scheduler_Runtime.cpp");
- delete infos;
}
TAO_CATCH (CORBA::SystemException, sys_ex)
{
diff --git a/TAO/orbsvcs/Event_Service/Event_Channel.cpp b/TAO/orbsvcs/Event_Service/Event_Channel.cpp
index 3d76ec9d805..87d01ed7869 100644
--- a/TAO/orbsvcs/Event_Service/Event_Channel.cpp
+++ b/TAO/orbsvcs/Event_Service/Event_Channel.cpp
@@ -377,7 +377,6 @@ ACE_ES_Event_Container::dump (void)
ACE_Push_Supplier_Proxy::ACE_Push_Supplier_Proxy (ACE_ES_Supplier_Module *sm)
: supplier_module_ (sm),
- me_ (this),
push_supplier_ (0)
{
}
@@ -455,8 +454,7 @@ ACE_Push_Supplier_Proxy::shutdown (void)
// ************************************************************
ACE_Push_Consumer_Proxy::ACE_Push_Consumer_Proxy (ACE_ES_Consumer_Module *cm)
- : me_ (this),
- push_consumer_ (0),
+ : push_consumer_ (0),
consumer_module_ (cm)
{
}
@@ -527,25 +525,16 @@ ACE_Push_Consumer_Proxy::shutdown (void)
// ************************************************************
ACE_EventChannel::ACE_EventChannel (u_long type)
- : POA_RtecEventChannelAdmin::EventChannel ("EventChannel"),
- rtu_manager_ (0),
+ : rtu_manager_ (0),
type_ (type),
state_ (INITIAL_STATE),
- me_ (this),
destroyed_ (0)
{
consumer_module_ = new ACE_ES_Consumer_Module (this);
// RtecEventChannelAdmin::ConsumerAdmin_duplicate(consumer_module_);
-#if defined(ACE_ES_LACKS_ORB)
- UPSSingleProcessorOrb_startup(type,
- dispatching_module,
- rtu_active,
- rtu_manager);
-#else
ACE_NEW(dispatching_module_,
ACE_ES_Priority_Dispatching(this, THREADS_PER_DISPATCH_QUEUE));
-#endif
correlation_module_ = new ACE_ES_Correlation_Module (this);
subscription_module_ = new ACE_ES_Subscription_Module (this);
@@ -869,7 +858,6 @@ ACE_ES_Consumer_Module::ACE_ES_Consumer_Module (ACE_EventChannel* channel)
: lock_ (),
all_consumers_ (),
channel_ (channel),
- me_ (this),
down_ (0)
{
}
@@ -2466,7 +2454,6 @@ ACE_ES_Subscription_Module::shutdown (void)
ACE_ES_Supplier_Module::ACE_ES_Supplier_Module (ACE_EventChannel *channel) :
all_suppliers_ (),
lock_ (),
- me_ (this),
up_ (0),
channel_ (channel)
{
diff --git a/TAO/orbsvcs/Event_Service/Event_Channel.i b/TAO/orbsvcs/Event_Service/Event_Channel.i
index 5aa3fb8453a..78816ed65ff 100644
--- a/TAO/orbsvcs/Event_Service/Event_Channel.i
+++ b/TAO/orbsvcs/Event_Service/Event_Channel.i
@@ -14,7 +14,8 @@ const unsigned int ACE_INT2BIT[32] =
ACE_INLINE RtecEventChannelAdmin::ProxyPushConsumer_ptr
ACE_Push_Supplier_Proxy::get_ref (void)
{
- return RtecEventChannelAdmin::ProxyPushConsumer::_duplicate(me_);
+ CORBA::Environment env;
+ return this->_this (env);
}
ACE_INLINE int
diff --git a/TAO/orbsvcs/Event_Service/Event_Service.cpp b/TAO/orbsvcs/Event_Service/Event_Service.cpp
index 2534d85c254..6e40b7b46b4 100644
--- a/TAO/orbsvcs/Event_Service/Event_Service.cpp
+++ b/TAO/orbsvcs/Event_Service/Event_Service.cpp
@@ -17,59 +17,63 @@ int main (int argc, char *argv[])
TAO_TRY
{
// Initialize ORB.
- CORBA::ORB_ptr orb =
+ CORBA::ORB_var orb =
CORBA::ORB_init (argc, argv, "internet", TAO_TRY_ENV);
TAO_CHECK_ENV;
- CORBA::POA_ptr poa =
- orb->POA_init(argc, argv, "POA");
- if (poa == 0)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- " (%P|%t) Unable to initialize the POA.\n"),
- 1);
- }
+ CORBA::Object_var poa_object =
+ orb->resolve_initial_references("RootPOA");
+ if (poa_object == 0)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ " (%P|%t) Unable to initialize the POA.\n"),
+ 1);
- CORBA::Object_ptr objref =
- orb->resolve_initial_references ("NameService");
+ PortableServer::POA_var root_poa =
+ PortableServer::POA::_narrow (poa_object, TAO_TRY_ENV);
TAO_CHECK_ENV;
- CosNaming::NamingContext_var naming_context =
- CosNaming::NamingContext::_narrow (objref, TAO_TRY_ENV);
+ PortableServer::POAManager_var poa_manager =
+ root_poa->the_POAManager (TAO_TRY_ENV);
TAO_CHECK_ENV;
- ACE_DEBUG ((LM_DEBUG, "got reference to NameService\n"));
+ CORBA::Object_var naming_obj =
+ orb->resolve_initial_references ("NameService");
+ if (naming_obj == 0)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ " (%P|%t) Unable to initialize the POA.\n"),
+ 1);
+
+ CosNaming::NamingContext_var naming_context =
+ CosNaming::NamingContext::_narrow (naming_obj, TAO_TRY_ENV);
+ TAO_CHECK_ENV;
- ACE_Scheduler_Factory::use_config (naming_context.ptr ());
+ ACE_Scheduler_Factory::use_config (naming_context.in ());
// Register Event_Service with Naming Service.
- ACE_EventChannel* ec;
- ACE_NEW_RETURN (ec, ACE_EventChannel, -1);
- TAO_CHECK_ENV;
+ ACE_EventChannel ec_impl;
- RtecEventChannelAdmin::EventChannel_ptr impl =
- ec->_this (TAO_TRY_ENV);
+ RtecEventChannelAdmin::EventChannel_var ec =
+ ec_impl._this (TAO_TRY_ENV);
TAO_CHECK_ENV;
- CORBA::String str =
- orb->object_to_string (impl, TAO_TRY_ENV);
- ACE_OS::puts ((char *) str);
+ CORBA::String_var str =
+ orb->object_to_string (ec.in (), TAO_TRY_ENV);
+
+ ACE_DEBUG ((LM_DEBUG, "The EC IOR is <%s>\n", str.in ()));
CosNaming::Name channel_name (1);
- channel_name[0].id = CORBA::string_dup ("EventService");
channel_name.length (1);
- naming_context->bind (channel_name, impl, TAO_TRY_ENV);
+ channel_name[0].id = CORBA::string_dup ("EventService");
+ naming_context->bind (channel_name, ec, TAO_TRY_ENV);
TAO_CHECK_ENV;
- orb->run ();
-
- naming_context->unbind (channel_name, TAO_TRY_ENV);
+ poa_manager->activate (TAO_TRY_ENV);
TAO_CHECK_ENV;
- CORBA::release (impl);
- TAO_CHECK_ENV;
+ ACE_DEBUG ((LM_DEBUG, "running scheduling service\n"));
+ if (orb->run () == -1)
+ ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "run"), 1);
- delete ec;
}
TAO_CATCHANY
{
diff --git a/TAO/orbsvcs/Naming_Service/CosNaming_i.cpp b/TAO/orbsvcs/Naming_Service/CosNaming_i.cpp
index c00189d3c1c..1450ad12b82 100644
--- a/TAO/orbsvcs/Naming_Service/CosNaming_i.cpp
+++ b/TAO/orbsvcs/Naming_Service/CosNaming_i.cpp
@@ -16,14 +16,6 @@
#include "CosNaming_i.h"
-NS_NamingContext::NS_NamingContext (const char *key)
- : POA_CosNaming::NamingContext (key)
-{
- if (context_.open (NS_MAP_SIZE) == -1)
- ACE_ERROR ((LM_ERROR, "%p\n", "NS_NamingContext"));
- // deal with fault
-}
-
NS_NamingContext::NS_NamingContext (void)
{
if (context_.open (NS_MAP_SIZE) == -1)
@@ -92,7 +84,6 @@ NS_NamingContext::bind (const CosNaming::Name& n,
{
IT_env.clear ();
- cout << "sizeof Naming Component = %d\n" << sizeof (CosNaming::NameComponent) << endl;
// get the length of the name
CORBA::ULong len = n.length ();
diff --git a/TAO/orbsvcs/Naming_Service/CosNaming_i.h b/TAO/orbsvcs/Naming_Service/CosNaming_i.h
index e0358929eb6..351df038cfe 100644
--- a/TAO/orbsvcs/Naming_Service/CosNaming_i.h
+++ b/TAO/orbsvcs/Naming_Service/CosNaming_i.h
@@ -43,9 +43,6 @@ class NS_NamingContext : public POA_CosNaming::NamingContext
NS_NamingContext (void);
// default constructor.
- NS_NamingContext (const char *key);
- // constructor
-
~NS_NamingContext (void);
// destructor.
diff --git a/TAO/orbsvcs/Naming_Service/Naming_Service.cpp b/TAO/orbsvcs/Naming_Service/Naming_Service.cpp
index bffdf3c9fc8..36152b29adb 100644
--- a/TAO/orbsvcs/Naming_Service/Naming_Service.cpp
+++ b/TAO/orbsvcs/Naming_Service/Naming_Service.cpp
@@ -52,7 +52,7 @@ IOR_Multicast::handle_input (ACE_HANDLE)
if (retcode == -1)
return -1;
- ACE_DEBUG ((LM_DEBUG, "Received multicast.\n"));
+ ACE_DEBUG ((LM_DEBUG, "(%P|%t) Received multicast.\n"));
// @@ validate data string received is from a valid client here
// @@ Probably not needed
@@ -78,7 +78,9 @@ IOR_Multicast::handle_input (ACE_HANDLE)
0);
ACE_DEBUG ((LM_DEBUG,
- "ior_ '%s' sent through port %u.\nretcode=%d\n",
+ "(%P|%t) ior_: <%s>\n"
+ " sent through port %u.\n"
+ "retcode=%d\n",
this->ior_,
this->remote_addr_.get_port_number (),
retcode));
@@ -89,95 +91,129 @@ IOR_Multicast::handle_input (ACE_HANDLE)
return 0;
}
-
int
main (int argc, char ** argv)
{
- CORBA::Environment env;
- char *orb_name = "internet";
-
- CORBA::ORB_ptr orb_ptr = CORBA::ORB_init (argc,
- argv,
- orb_name,
- env);
-
- if (env.exception () != 0)
+ TAO_TRY
{
- env.print_exception ("ORB init");
- return 1;
- }
-
- // Initialize the Object Adapter
- CORBA::POA_ptr oa_ptr = orb_ptr->POA_init (argc, argv, "POA");
-
- if (oa_ptr == 0)
- ACE_ERROR_RETURN ((LM_ERROR,
- " (%P|%t) Unable to initialize the POA.\n"),
- 1);
-
- // Create a naming context object.
- NS_NamingContext *naming_context = new NS_NamingContext ("NameService");
+ CORBA::ORB_var orb = CORBA::ORB_init (argc,
+ argv,
+ "internet",
+ TAO_TRY_ENV);
+ TAO_CHECK_ENV;
+
+ // Initialize the Object Adapter
+ CORBA::Object_var poa_object =
+ orb->resolve_initial_references("RootPOA");
+ if (poa_object == 0)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ " (%P|%t) Unable to initialize the POA.\n"),
+ 1);
+
+ PortableServer::POA_var root_poa =
+ PortableServer::POA::_narrow (poa_object, TAO_TRY_ENV);
+ TAO_CHECK_ENV;
+
+ PortableServer::POAManager_var poa_manager =
+ root_poa->the_POAManager (TAO_TRY_ENV);
+ TAO_CHECK_ENV;
+
+ // We use a different POA. The RootPOA lifespan policy is
+ // "TRANSIENT", hence whatever object key we export (for
+ // instance in an environment variable) is invalid next time we
+ // run. To avoid this (and make the user life easier) we create
+ // a new POA:
- // Stringify the objref we'll be implementing, and print it to
- // stdout. Someone will take that string and give it to a
- // client. Then release the object.
- CosNaming::NamingContext_ptr obj =
- naming_context->_this (env);
- if (env.exception () != 0)
- {
- env.print_exception ("_this");
- return 1;
- }
- CORBA::String str;
- str = ACE_OS::strdup (orb_ptr->object_to_string (obj, env));
-
- if (env.exception () != 0)
- {
- env.print_exception ("object2string");
- return 1;
- }
-
- ACE_DEBUG ((LM_DEBUG, "listening as object '%s'\n", str));
- CORBA::release (obj);
+ PortableServer::PolicyList policies (2);
+ policies.length (2);
+ policies[0] =
+ root_poa->create_id_assignment_policy (PortableServer::USER_ID,
+ TAO_TRY_ENV);
+ policies[1] =
+ root_poa->create_lifespan_policy (PortableServer::PERSISTENT,
+ TAO_TRY_ENV);
+
+ PortableServer::POA_var good_poa =
+ root_poa->create_POA ("RootPOA_is_BAD",
+ poa_manager.in (),
+ policies,
+ TAO_TRY_ENV);
+ TAO_CHECK_ENV;
+
+ // Create a naming context object.
+ NS_NamingContext naming_context_impl;
+
+ PortableServer::ObjectId_var id =
+ PortableServer::string_to_ObjectId ("NameService");
+ good_poa->activate_object_with_id (id.in (),
+ &naming_context_impl,
+ TAO_TRY_ENV);
+ TAO_CHECK_ENV;
+
+ // Stringify the objref we'll be implementing, and print it to
+ // stdout. Someone will take that string and give it to a
+ // client. Then release the object.
+ CORBA::Object_var obj =
+ good_poa->id_to_reference (id.in (), TAO_TRY_ENV);
+ TAO_CHECK_ENV;
+
+ CORBA::String_var str =
+ orb->object_to_string (obj.in (),
+ TAO_TRY_ENV);
+ TAO_CHECK_ENV;
+
+ ACE_DEBUG ((LM_DEBUG, "listening as object <%s>\n", str.in ()));
#if defined (ACE_HAS_IP_MULTICAST)
- // get reactor instance from TAO
- ACE_Reactor *reactor = TAO_ORB_Core_instance ()->reactor ();
+ // get reactor instance from TAO
+ ACE_Reactor *reactor = TAO_ORB_Core_instance ()->reactor ();
- // First, see if the user has given us a multicast port number
- // for the name service on the command-line;
- u_short port = TAO_ORB_Core_instance ()->orb_params ()->name_service_port ();
- if (port == 0)
- {
- const char *port_number = ACE_OS::getenv ("NameServicePort");
-
- if (port_number != 0)
- port = ACE_OS::atoi (port_number);
- }
-
- if (port == 0)
- port = TAO_DEFAULT_NAME_SERVER_REQUEST_PORT;
-
- // Instantiate a server which will receive requests for an ior
- IOR_Multicast ior_multicast (str,
- port,
- ACE_DEFAULT_MULTICAST_ADDR);
-
- // register event handler for the ior multicast.
- if (reactor->register_handler (&ior_multicast,
- ACE_Event_Handler::READ_MASK) == -1)
- ACE_ERROR ((LM_ERROR, "%p\n%a", "register_handler", 1));
+ // First, see if the user has given us a multicast port number
+ // for the name service on the command-line;
+ u_short port = TAO_ORB_Core_instance ()->orb_params ()->name_service_port ();
+ if (port == 0)
+ {
+ const char *port_number = ACE_OS::getenv ("NameServicePort");
+
+ if (port_number != 0)
+ port = ACE_OS::atoi (port_number);
+ }
+
+ if (port == 0)
+ port = TAO_DEFAULT_NAME_SERVER_REQUEST_PORT;
+
+ // Instantiate a server which will receive requests for an ior
+ IOR_Multicast ior_multicast (str,
+ port,
+ ACE_DEFAULT_MULTICAST_ADDR);
+
+ // register event handler for the ior multicast.
+ if (reactor->register_handler (&ior_multicast,
+ ACE_Event_Handler::READ_MASK) == -1)
+ ACE_ERROR ((LM_ERROR, "%p\n%a", "register_handler", 1));
- ACE_DEBUG ((LM_DEBUG, "The multicast server setup is done.\n"));
+ ACE_DEBUG ((LM_DEBUG, "The multicast server setup is done.\n"));
#endif /* ACE_HAS_IP_MULTICAST */
- // Handle requests for this object until we're killed, or one of the
- // methods asks us to exit.
- if (orb_ptr->run () == -1)
- ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "run"), -1);
+ poa_manager->activate (TAO_TRY_ENV);
+ TAO_CHECK_ENV;
+
+ // Handle requests for this object until we're killed, or one of
+ // the methods asks us to exit.
+ if (orb->run () == -1)
+ ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "run"), -1);
- // free memory with "free" because we used strdup which uses malloc
- ACE_OS::free (str);
+ root_poa->destroy (CORBA::B_TRUE,
+ CORBA::B_TRUE,
+ TAO_TRY_ENV);
+ TAO_CHECK_ENV;
+ }
+ TAO_CATCHANY
+ {
+ TAO_TRY_ENV.print_exception ("Naming Service");
+ return 1;
+ }
+ TAO_ENDTRY;
return 0;
}
diff --git a/TAO/orbsvcs/Scheduling_Service/Config_Scheduler.cpp b/TAO/orbsvcs/Scheduling_Service/Config_Scheduler.cpp
index 768b6b1f7b7..fbce0144337 100644
--- a/TAO/orbsvcs/Scheduling_Service/Config_Scheduler.cpp
+++ b/TAO/orbsvcs/Scheduling_Service/Config_Scheduler.cpp
@@ -14,8 +14,7 @@
#endif /* __ACE_INLINE__ */
ACE_Config_Scheduler::ACE_Config_Scheduler (void)
- : POA_RtecScheduler::Scheduler ("Scheduler_Generic"),
- impl(new Scheduler_Generic)
+ : impl(new Scheduler_Generic)
{
impl->output_level (10);
}
diff --git a/TAO/orbsvcs/Scheduling_Service/Scheduling_Service.cpp b/TAO/orbsvcs/Scheduling_Service/Scheduling_Service.cpp
index 151873c7f25..b5ec3320990 100644
--- a/TAO/orbsvcs/Scheduling_Service/Scheduling_Service.cpp
+++ b/TAO/orbsvcs/Scheduling_Service/Scheduling_Service.cpp
@@ -12,56 +12,64 @@ int main (int argc, char *argv[])
TAO_TRY
{
// Initialize ORB.
- CORBA::ORB_ptr orb =
+ CORBA::ORB_var orb =
CORBA::ORB_init (argc, argv, "internet", TAO_TRY_ENV);
TAO_CHECK_ENV;
- CORBA::POA_ptr poa =
- orb->POA_init(argc, argv, "POA");
- if (poa == 0)
- {
- ACE_ERROR_RETURN ((LM_ERROR,
- " (%P|%t) Unable to initialize the POA.\n"),
- 1);
- }
+ CORBA::Object_var poa_object =
+ orb->resolve_initial_references("RootPOA");
+ if (poa_object == 0)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ " (%P|%t) Unable to initialize the POA.\n"),
+ 1);
- CORBA::Object_ptr objref =
- orb->resolve_initial_references ("NameService");
+ PortableServer::POA_var root_poa =
+ PortableServer::POA::_narrow (poa_object, TAO_TRY_ENV);
+ TAO_CHECK_ENV;
+
+ PortableServer::POAManager_var poa_manager =
+ root_poa->the_POAManager (TAO_TRY_ENV);
TAO_CHECK_ENV;
+ CORBA::Object_var naming_obj =
+ orb->resolve_initial_references ("NameService");
+ if (naming_obj == 0)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ " (%P|%t) Unable to initialize the POA.\n"),
+ 1);
+
CosNaming::NamingContext_var naming_context =
- CosNaming::NamingContext::_narrow (objref, TAO_TRY_ENV);
+ CosNaming::NamingContext::_narrow (naming_obj, TAO_TRY_ENV);
TAO_CHECK_ENV;
// Create an Scheduling service servant...
- ACE_Config_Scheduler *scheduler = new ACE_Config_Scheduler;
+ ACE_Config_Scheduler scheduler_impl;
TAO_CHECK_ENV;
- RtecScheduler::Scheduler_ptr obj =
- scheduler->_this (TAO_TRY_ENV);
- TAO_CHECK_ENV;
+ RtecScheduler::Scheduler_var scheduler =
+ scheduler_impl._this (TAO_TRY_ENV);
+ TAO_CHECK_ENV;
- CORBA::String str =
- orb->object_to_string (obj, TAO_TRY_ENV);
- TAO_CHECK_ENV;
+ CORBA::String_var str =
+ orb->object_to_string (scheduler.in (), TAO_TRY_ENV);
+ TAO_CHECK_ENV;
- ACE_OS::puts ((char *) str);
+ ACE_DEBUG ((LM_DEBUG, "The scheduler IOR is <%s>\n", str.in ()));
// Register the servant with the Naming Context....
CosNaming::Name schedule_name (1);
schedule_name.length (1);
schedule_name[0].id = CORBA::string_dup ("ScheduleService");
- naming_context->bind (schedule_name, obj, TAO_TRY_ENV);
+ naming_context->bind (schedule_name, scheduler, TAO_TRY_ENV);
+ TAO_CHECK_ENV;
+
+ poa_manager->activate (TAO_TRY_ENV);
TAO_CHECK_ENV;
ACE_DEBUG ((LM_DEBUG, "running scheduling service\n"));
if (orb->run () == -1)
- {
- ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "run"), 1);
- }
+ ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "run"), 1);
- CORBA::release (obj);
- delete scheduler;
}
TAO_CATCHANY
{
diff --git a/TAO/orbsvcs/orbsvcs/Runtime_Scheduler.cpp b/TAO/orbsvcs/orbsvcs/Runtime_Scheduler.cpp
index ffe3639d3d9..190927faa5b 100644
--- a/TAO/orbsvcs/orbsvcs/Runtime_Scheduler.cpp
+++ b/TAO/orbsvcs/orbsvcs/Runtime_Scheduler.cpp
@@ -13,8 +13,7 @@
ACE_Runtime_Scheduler::
ACE_Runtime_Scheduler (int entry_count,
RtecScheduler::RT_Info* rt_info[])
-: POA_RtecScheduler::Scheduler ("Static_Scheduler"),
- entry_count_ (entry_count),
+: entry_count_ (entry_count),
rt_info_ (rt_info)
{
}
diff --git a/TAO/orbsvcs/orbsvcs/Scheduler_Factory.cpp b/TAO/orbsvcs/orbsvcs/Scheduler_Factory.cpp
index 681470630e8..b6abd44a072 100644
--- a/TAO/orbsvcs/orbsvcs/Scheduler_Factory.cpp
+++ b/TAO/orbsvcs/orbsvcs/Scheduler_Factory.cpp
@@ -68,9 +68,16 @@ RtecScheduler::Scheduler_ptr static_server ()
info[i]->subpriority = rt_info[i].subpriority;
info[i]->preemption_priority = rt_info[i].preemption_priority;
}
- server_ = new ACE_Runtime_Scheduler (entry_count, info);
+ static ACE_Runtime_Scheduler scheduler(entry_count, info);
+ TAO_TRY
+ {
+ server_ = scheduler._this (TAO_TRY_ENV);
+ TAO_CHECK_ENV;
- if (server_ == 0)
+ ACE_DEBUG ((LM_DEBUG,
+ "ACE_Scheduler_Factory - configured static server\n"));
+ }
+ TAO_CATCHANY
{
for (int i = 0; i < entry_count; ++i)
{
@@ -81,9 +88,7 @@ RtecScheduler::Scheduler_ptr static_server ()
"ACE_Scheduler_Factory::config_runtime - "
"cannot allocate server\n"), 0);
}
- ACE_DEBUG ((LM_DEBUG,
- "ACE_Scheduler_Factory - configured static server\n"));
- CORBA::Object::_duplicate (server_);
+ TAO_ENDTRY;
return server_;
}
diff --git a/TAO/orbsvcs/tests/Event_Latency/Event_Latency.cpp b/TAO/orbsvcs/tests/Event_Latency/Event_Latency.cpp
index beb2cc27f3a..2b46a5e705d 100644
--- a/TAO/orbsvcs/tests/Event_Latency/Event_Latency.cpp
+++ b/TAO/orbsvcs/tests/Event_Latency/Event_Latency.cpp
@@ -85,16 +85,21 @@ Latency_Consumer::open_consumer (RtecEventChannelAdmin::EventChannel_ptr ec,
this->channel_admin_ = ec;
// = Connect as a consumer.
- consumer_admin_ =
- RtecEventChannelAdmin::ConsumerAdmin::_duplicate(channel_admin_->for_consumers (TAO_TRY_ENV));
+ this->consumer_admin_ =
+ channel_admin_->for_consumers (TAO_TRY_ENV);
TAO_CHECK_ENV;
- suppliers_ =
- RtecEventChannelAdmin::ProxyPushSupplier::_duplicate(consumer_admin_->obtain_push_supplier (TAO_TRY_ENV));
+
+ this->suppliers_ =
+ consumer_admin_->obtain_push_supplier (TAO_TRY_ENV);
TAO_CHECK_ENV;
- suppliers_->connect_push_consumer (this,
- dependencies.get_ConsumerQOS (),
- TAO_TRY_ENV);
+ RtecEventComm::PushConsumer_var objref =
+ this->_this (TAO_TRY_ENV);
+ TAO_CHECK_ENV;
+
+ this->suppliers_->connect_push_consumer (objref.in (),
+ dependencies.get_ConsumerQOS (),
+ TAO_TRY_ENV);
TAO_CHECK_ENV;
}
TAO_CATCH (RtecEventChannelAdmin::EventChannel::SUBSCRIPTION_ERROR, se)
@@ -218,8 +223,6 @@ Latency_Consumer::shutdown (void)
suppliers_->disconnect_push_supplier (TAO_TRY_ENV);
TAO_CHECK_ENV;
- CORBA::release (suppliers_);
-
ACE_DEBUG ((LM_DEBUG, "@@ we should shutdown here!!!\n"));
TAO_CHECK_ENV;
}
@@ -346,23 +349,19 @@ Latency_Supplier::open_supplier (RtecEventChannelAdmin::EventChannel_ptr ec,
master_ = master;
TAO_TRY
{
+ this->channel_admin_ = ec;
+
RtecScheduler::Scheduler_ptr server =
ACE_Scheduler_Factory::server ();
- rt_info_ =
+ this->rt_info_ =
server->create (name, TAO_TRY_ENV);
server->set (rt_info_, 1, 1, 1, timeout_interval * 10000,
RtecScheduler::VERY_LOW,
RtecScheduler::NO_QUANTUM, 1,
TAO_TRY_ENV);
-
-#if 0
- SUPPLIER_NS::RegisterService
- (entry_point (),
- // ACE_Naming::NOBJECT,
- NOBJECT, this);
-#endif /* 0 */
+ TAO_CHECK_ENV;
ACE_SupplierQOS_Factory publications;
publications.insert (supplier_id_,
@@ -372,17 +371,20 @@ Latency_Supplier::open_supplier (RtecEventChannelAdmin::EventChannel_ptr ec,
ACE_ES_EVENT_SHUTDOWN,
rt_info_, 1);
- this->channel_admin_ = ec;
-
// = Connect as a supplier.
- supplier_admin_ =
- RtecEventChannelAdmin::SupplierAdmin::_duplicate(channel_admin_->for_suppliers (TAO_TRY_ENV));
+ this->supplier_admin_ =
+ channel_admin_->for_suppliers (TAO_TRY_ENV);
TAO_CHECK_ENV;
- consumers_ =
- RtecEventChannelAdmin::ProxyPushConsumer::_duplicate(supplier_admin_->obtain_push_consumer (TAO_TRY_ENV));
+
+ this->consumers_ =
+ supplier_admin_->obtain_push_consumer (TAO_TRY_ENV);
+ TAO_CHECK_ENV;
+
+ RtecEventComm::PushSupplier_var objref =
+ this->supplier_->_this (TAO_TRY_ENV);
TAO_CHECK_ENV;
- consumers_->connect_push_supplier (this->supplier_,
+ consumers_->connect_push_supplier (objref.in (),
publications.get_SupplierQOS (),
TAO_TRY_ENV);
TAO_CHECK_ENV;
@@ -427,13 +429,17 @@ Latency_Supplier::start_generating_events (void)
// = Connect as a consumer.
consumer_admin_ =
- RtecEventChannelAdmin::ConsumerAdmin::_duplicate(channel_admin_->for_consumers (TAO_TRY_ENV));
+ channel_admin_->for_consumers (TAO_TRY_ENV);
TAO_CHECK_ENV;
suppliers_ =
- RtecEventChannelAdmin::ProxyPushSupplier::_duplicate(consumer_admin_->obtain_push_supplier (TAO_TRY_ENV));
+ consumer_admin_->obtain_push_supplier (TAO_TRY_ENV);
+ TAO_CHECK_ENV;
+
+ RtecEventComm::PushConsumer_var objref =
+ this->consumer_->_this (TAO_TRY_ENV);
TAO_CHECK_ENV;
- suppliers_->connect_push_consumer (this->consumer_,
+ suppliers_->connect_push_consumer (objref,
dependencies.get_ConsumerQOS (),
TAO_TRY_ENV);
TAO_CHECK_ENV;
@@ -741,11 +747,9 @@ get_options (int argc, char *argv [])
return 0;
}
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
+//
// function main
-///////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////
+//
int
main (int argc, char *argv [])
{
@@ -763,7 +767,6 @@ main (int argc, char *argv [])
else
{
ACE_DEBUG ((LM_ERROR, "%p\n", "Latency"));
- ACE_OS::exit (-1);
}
}
@@ -772,40 +775,56 @@ main (int argc, char *argv [])
TAO_TRY
{
// Initialize ORB.
- CORBA::ORB_ptr orb =
+ CORBA::ORB_var orb =
CORBA::ORB_init (argc, argv, "internet", TAO_TRY_ENV);
TAO_CHECK_ENV;
- CORBA::POA_ptr poa =
- orb->POA_init(argc, argv, "POA");
-
- if (get_options (argc, argv))
- ACE_OS::exit (-1);
+ CORBA::Object_var poa_object =
+ orb->resolve_initial_references("RootPOA");
+ if (poa_object == 0)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ " (%P|%t) Unable to initialize the POA.\n"),
+ 1);
+ PortableServer::POA_var root_poa =
+ PortableServer::POA::_narrow (poa_object, TAO_TRY_ENV);
+ TAO_CHECK_ENV;
+ PortableServer::POAManager_var poa_manager =
+ root_poa->the_POAManager (TAO_TRY_ENV);
+ TAO_CHECK_ENV;
- CORBA::Object_ptr objref =
+ CORBA::Object_var naming_obj =
orb->resolve_initial_references ("NameService");
- TAO_CHECK_ENV;
+ if (naming_obj == 0)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ " (%P|%t) Unable to initialize the POA.\n"),
+ 1);
+
CosNaming::NamingContext_var naming_context =
- CosNaming::NamingContext::_narrow (objref, TAO_TRY_ENV);
+ CosNaming::NamingContext::_narrow (naming_obj, TAO_TRY_ENV);
TAO_CHECK_ENV;
- ACE_Scheduler_Factory::use_config (naming_context.ptr ());
+ ACE_Scheduler_Factory::use_config (naming_context.in ());
+
+ if (get_options (argc, argv))
+ ACE_OS::exit (-1);
// Allocate the timeprobe instance now, so we don't measure
// the cost of doing it later.
ACE_TIMEPROBE_RESET;
CosNaming::Name channel_name (1);
- channel_name[0].id = CORBA::string_dup ("EventService");
channel_name.length (1);
+ channel_name[0].id = CORBA::string_dup ("EventService");
- CORBA::Object_ptr ec_ptr =
+ CORBA::Object_var ec_obj =
naming_context->resolve (channel_name, TAO_TRY_ENV);
TAO_CHECK_ENV;
+
RtecEventChannelAdmin::EventChannel_var ec =
- RtecEventChannelAdmin::EventChannel::_narrow (ec_ptr, TAO_TRY_ENV);
+ RtecEventChannelAdmin::EventChannel::_narrow (ec_obj.in (),
+ TAO_TRY_ENV);
TAO_CHECK_ENV;
// Create supplier(s).
@@ -834,7 +853,6 @@ main (int argc, char *argv [])
for (i = 0; i < consumers; ++i)
{
ACE_NEW_RETURN (consumer [i], Latency_Consumer (measure_jitter), -1);
- RtecEventComm::PushConsumer::_duplicate (consumer[i]);
char buf [BUFSIZ];
sprintf (buf, "consumer-%d", i+1);
@@ -879,7 +897,7 @@ main (int argc, char *argv [])
ACE_TIMEPROBE_PRINT;
ACE_TIMEPROBE_FINI;
}
- TAO_CATCH (CORBA::SystemException, sys_ex)
+ TAO_CATCHANY
{
TAO_TRY_ENV.print_exception ("SYS_EX");
}
diff --git a/TAO/orbsvcs/tests/Event_Latency/Event_Latency.h b/TAO/orbsvcs/tests/Event_Latency/Event_Latency.h
index f722eff644a..5c5b977d69d 100644
--- a/TAO/orbsvcs/tests/Event_Latency/Event_Latency.h
+++ b/TAO/orbsvcs/tests/Event_Latency/Event_Latency.h
@@ -67,8 +67,8 @@ protected:
// = Event channel adminstration references.
RtecEventChannelAdmin::EventChannel_var channel_admin_;
- RtecEventChannelAdmin::ConsumerAdmin_ptr consumer_admin_;
- RtecEventChannelAdmin::ProxyPushSupplier_ptr suppliers_;
+ RtecEventChannelAdmin::ConsumerAdmin_var consumer_admin_;
+ RtecEventChannelAdmin::ProxyPushSupplier_var suppliers_;
private:
RtecScheduler::handle_t rt_info_;
diff --git a/TAO/tests/Cubit/TAO/IDL_Cubit/svr.cpp b/TAO/tests/Cubit/TAO/IDL_Cubit/svr.cpp
index 5563ff69fea..70ecebc8711 100644
--- a/TAO/tests/Cubit/TAO/IDL_Cubit/svr.cpp
+++ b/TAO/tests/Cubit/TAO/IDL_Cubit/svr.cpp
@@ -109,7 +109,6 @@ main (int argc, char *argv[])
if (TAO_debug_level > 0)
{
-#if 1
CORBA::Object_var obj =
good_poa->id_to_reference (id.in (), TAO_TRY_ENV);
TAO_CHECK_ENV;
@@ -117,16 +116,7 @@ main (int argc, char *argv[])
CORBA::String_var str =
orb->object_to_string (obj.in (),
TAO_TRY_ENV);
-
-#else
- Cubit_Factory_var factory =
- factory_impl._this (TAO_TRY_ENV);
-
- CORBA::String_var str =
- orb->object_to_string (factory.in (),
- TAO_TRY_ENV);
-
-#endif
+ TAO_CHECK_ENV;
ACE_DEBUG ((LM_DEBUG,
"The IOR is: <%s>\n", str.in ()));