diff options
author | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-01-23 22:48:17 +0000 |
---|---|---|
committer | coryan <coryan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-01-23 22:48:17 +0000 |
commit | 4689ce6d718bd0e4cf0220845a80861169b10b2d (patch) | |
tree | 7924d6cc772abe5ca9ed14cf76950ed8a6b91390 | |
parent | ea5dd453e3472c812b7be366255542f5647afc71 (diff) | |
download | ATCD-4689ce6d718bd0e4cf0220845a80861169b10b2d.tar.gz |
ChangeLogTag:Fri Jan 23 16:43:12 1998 Carlos O'Ryan <coryan@cs.wustl.edu>
-rw-r--r-- | TAO/ChangeLog-98c | 26 | ||||
-rw-r--r-- | TAO/orbsvcs/Dump_Schedule/Dump_Schedule.cpp | 43 | ||||
-rw-r--r-- | TAO/orbsvcs/Event_Service/Event_Channel.cpp | 17 | ||||
-rw-r--r-- | TAO/orbsvcs/Event_Service/Event_Channel.i | 3 | ||||
-rw-r--r-- | TAO/orbsvcs/Event_Service/Event_Service.cpp | 66 | ||||
-rw-r--r-- | TAO/orbsvcs/Naming_Service/CosNaming_i.cpp | 9 | ||||
-rw-r--r-- | TAO/orbsvcs/Naming_Service/CosNaming_i.h | 3 | ||||
-rw-r--r-- | TAO/orbsvcs/Naming_Service/Naming_Service.cpp | 194 | ||||
-rw-r--r-- | TAO/orbsvcs/Scheduling_Service/Config_Scheduler.cpp | 3 | ||||
-rw-r--r-- | TAO/orbsvcs/Scheduling_Service/Scheduling_Service.cpp | 60 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/Runtime_Scheduler.cpp | 3 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/Scheduler_Factory.cpp | 15 | ||||
-rw-r--r-- | TAO/orbsvcs/tests/Event_Latency/Event_Latency.cpp | 112 | ||||
-rw-r--r-- | TAO/orbsvcs/tests/Event_Latency/Event_Latency.h | 4 | ||||
-rw-r--r-- | TAO/tests/Cubit/TAO/IDL_Cubit/svr.cpp | 12 |
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 ())); |