diff options
author | thrall <thrall@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2004-05-12 20:49:44 +0000 |
---|---|---|
committer | thrall <thrall@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2004-05-12 20:49:44 +0000 |
commit | 7da86d13138dc8549315eeb2917eaee112f16cac (patch) | |
tree | 754923d51d1078e28491cbe11944e8cce750a524 | |
parent | c22785592fa1030405719012b28502c7a37fd072 (diff) | |
download | ATCD-7da86d13138dc8549315eeb2917eaee112f16cac.tar.gz |
Moved START and STOP to bracket orb->run() and use orb->run() to limit runtime instead of EC_Event_Limit
7 files changed, 135 insertions, 600 deletions
diff --git a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/Consumer_EC.cpp b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/Consumer_EC.cpp index dc6843fbfa3..7948de9b9bf 100644 --- a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/Consumer_EC.cpp +++ b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/Consumer_EC.cpp @@ -13,7 +13,6 @@ #include "orbsvcs/Event/EC_Kokyu_Factory.h" #include "orbsvcs/Time_Utilities.h" #include "orbsvcs/Event_Service_Constants.h" -#include "orbsvcs/Event/EC_Event_Limit.h" #include "tao/ORB_Core.h" #include "Kokyu_EC.h" @@ -76,27 +75,6 @@ public: ACE_DEBUG((LM_DEBUG,"Once_Handler (%P|%t) handle_service_start() START\n")); this->handled_start_++; //set to true - // Uncommenting this causes the Supplier_EC event type 18 to never be pushed again (despite the timeout happening) - //trigger Task 3! - /* - kokyu_ec_->add_timeout_consumer( - supplier_impl_, - timeout_handler_impl_, - timeout_entry_point_, - period_, - crit_, - imp_ - ACE_ENV_ARG_PARAMETER - ); - ACE_CHECK; - - //should be able to just call Kokyu_EC::start() to recompute schedule - //BEWARE if kokyu_ec_ overrides start() to do stuff we don't want to redo! - //which is why we specify the Kokyu_EC version of the function! - kokyu_ec_->Kokyu_EC::start(ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - */ - //WARNING: depending on Reactor, might not be a RT solution! this->timer_handle_ = this->reactor_->schedule_timer(this->timeout_handler_impl_, @@ -129,14 +107,6 @@ private: ACE_Time_Value period_; long timer_handle_; - /* - Timeout_Consumer * timeout_consumer_impl_; - Supplier * supplier_impl_; - const char * timeout_entry_point_; - RtecScheduler::Criticality_t crit_; - RtecScheduler::Importance_t imp_; - Kokyu_EC * kokyu_ec_; - */ }; class Consumer_EC : public Kokyu_EC @@ -287,24 +257,15 @@ int main (int argc, char* argv[]) { //TAO_EC_Default_Factory::init_svcs (); -#ifdef ACE_HAS_DSUI - ds_control* ds_cntl = new ds_control ("Federated_Test_Consumer","consumer_enabled.dsui"); -#endif // ACE_HAS_DSUI - TAO_EC_Kokyu_Factory::init_svcs (); - //@BT -#ifdef ACE_HAS_DSUI - // ACE_Object_Counter::object_id oid = ACE_OBJECT_COUNTER->increment(); - // DSTRM_EVENT(MAIN_GROUP_FAM, START, 1, sizeof(EC_Event_Counter::event_id), (char*)&eid); - ACE_Time_Value now(ACE_OS::gettimeofday()); - ACE_OS::printf("Consumer_EC START at %isec %iusec\n",now.sec(),now.usec()); - DSTRM_EVENT(MAIN_GROUP_FAM, START, 0, 0, NULL); -#endif //ACE_HAS_DSUI - ACE_DECLARE_NEW_CORBA_ENV; ACE_TRY { +#ifdef ACE_HAS_DSUI + ds_control ds_cntl("Federated_Test_Consumer","consumer_enabled.dsui"); +#endif // ACE_HAS_DSUI + // ORB initialization boiler plate... CORBA::ORB_var orb = CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER); @@ -312,8 +273,6 @@ main (int argc, char* argv[]) if (parse_args (argc, argv) == -1) { - ACE_ERROR ((LM_ERROR, - "Usage: Service [-o IOR_file_name]\n")); return 1; } @@ -381,24 +340,26 @@ main (int argc, char* argv[]) //DSTRM_EVENT (MAIN_GROUP_FAM, WORKER_ACTIVATED, 1, 0, NULL); ACE_DEBUG((LM_DEBUG,"Consumer_EC thread %t WORKER_ACTIVATED at %u\n",ACE_OS::gettimeofday().msec())); DSTRM_EVENT (MAIN_GROUP_FAM, WORKER_ACTIVATED, 0, 0, NULL); -#endif //ACE_HAS_DSUI -#ifdef ACE_HAS_DSUI - EC_Event_Limit* e_limit = new EC_Event_Limit (orb, ds_cntl); -#else - EC_Event_Limit* e_limit = new EC_Event_Limit (orb); + //@BT + // ACE_Object_Counter::object_id oid = ACE_OBJECT_COUNTER->increment(); + // DSTRM_EVENT(MAIN_GROUP_FAM, START, 1, sizeof(EC_Event_Counter::event_id), (char*)&eid); + ACE_Time_Value now(ACE_OS::gettimeofday()); + ACE_OS::printf("Consumer_EC START at %isec %iusec\n",now.sec(),now.usec()); + DSTRM_EVENT(MAIN_GROUP_FAM, START, 0, 0, NULL); #endif //ACE_HAS_DSUI - ACE_Time_Value ticker (125); - long timer_id = rt.reactor()->schedule_timer(e_limit,0, ticker); - if (timer_id < 0) - { - ACE_DEBUG((LM_DEBUG,"Consumer_EC (%t) Could not schedule EC_Event_Limit timeout\n")); - } rt.activate(); //need thread creation flags? or priority? - orb->run (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_Time_Value stop_time(300,0); + orb->run (stop_time ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; +#ifdef ACE_HAS_DSUI + //@BT + //DSTRM_EVENT(MAIN_GROUP_FAM, STOP, 1, 0, NULL); + ACE_DEBUG((LM_DEBUG,"Consumer_EC thread %t STOP at %u\n",ACE_OS::gettimeofday().msec())); + DSTRM_EVENT(MAIN_GROUP_FAM, STOP, 1, 0, NULL); +#endif //ACE_HAS_DSUI // **************************************************************** // We should do a lot of cleanup (disconnect from the EC, @@ -408,7 +369,7 @@ main (int argc, char* argv[]) } ACE_CATCHANY { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Consumer_EC - Service"); + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Consumer_EC"); return 1; } ACE_ENDTRY; diff --git a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/Supplier_EC.cpp b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/Supplier_EC.cpp index 56fce0243e5..d50180df148 100644 --- a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/Supplier_EC.cpp +++ b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/Supplier_EC.cpp @@ -12,7 +12,6 @@ #include "orbsvcs/Event/EC_Kokyu_Factory.h" #include "orbsvcs/Time_Utilities.h" #include "orbsvcs/Event_Service_Constants.h" -#include "orbsvcs/Event/EC_Event_Limit.h" #include "tao/ORB_Core.h" #include "Kokyu_EC.h" @@ -205,22 +204,16 @@ int main (int argc, char* argv[]) { //TAO_EC_Default_Factory::init_svcs (); -#ifdef ACE_HAS_DSUI - ds_control* ds_cntl = new ds_control ("Federated_Test_Supplier","supplier_enabled.dsui"); -#endif //ACE_HAS_DSUI - TAO_EC_Kokyu_Factory::init_svcs (); TAO_EC_Gateway_IIOP_Factory::init_svcs (); - //@BT - //DSTRM_EVENT(MAIN_GROUP_FAM, START,1,0,NULL); - ACE_Time_Value now(ACE_OS::gettimeofday()); - ACE_OS::printf("Supplier_EC START at %isec %iusec\n",now.sec(),now.usec()); - DSTRM_EVENT(MAIN_GROUP_FAM, START,0,0,NULL); - ACE_DECLARE_NEW_CORBA_ENV; ACE_TRY { +#ifdef ACE_HAS_DSUI + ds_control ds_cntl("Federated_Test_Supplier","supplier_enabled.dsui"); +#endif //ACE_HAS_DSUI + // ORB initialization boiler plate... CORBA::ORB_var orb = CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER); @@ -228,10 +221,6 @@ main (int argc, char* argv[]) if (parse_args (argc, argv) == -1) { - ACE_ERROR ((LM_ERROR, - "Usage: %s -s <rms|muf|edf>" - "\n", - argv [0])); return 1; } @@ -285,6 +274,7 @@ main (int argc, char* argv[]) supplier_ec.start(ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; +#ifdef ACE_HAS_DSUI //@BT: Timeouts start when orb starts, similar to starting the DT worker thread //DSTRM_EVENT (MAIN_GROUP_FAM, WORKER_ACTIVATED, 1, 0, NULL); ACE_DEBUG((LM_DEBUG,"Supplier_EC thread %t WORKER_ACTIVATED at %u\n",ACE_OS::gettimeofday().msec())); @@ -293,57 +283,35 @@ main (int argc, char* argv[]) ACE_DEBUG((LM_DEBUG,"Supplier_EC thread %t WORKER_STARTED at %u\n",ACE_OS::gettimeofday().msec())); DSTRM_EVENT (WORKER_GROUP_FAM, WORKER_STARTED, 0, 0, NULL); -#ifdef ACE_HAS_DSUI - EC_Event_Limit* e_limit = new EC_Event_Limit (orb, ds_cntl); -#else - EC_Event_Limit* e_limit = new EC_Event_Limit (orb); + //@BT + //DSTRM_EVENT(MAIN_GROUP_FAM, START,1,0,NULL); + ACE_Time_Value now(ACE_OS::gettimeofday()); + ACE_OS::printf("Supplier_EC START at %isec %iusec\n",now.sec(),now.usec()); + DSTRM_EVENT(MAIN_GROUP_FAM, START,0,0,NULL); #endif //ACE_HAS_DSUI - ACE_Time_Value ticker (120); - //orb->orb_core()->reactor()->schedule_timer(e_limit,0, ticker); - long timer_id = rt.reactor()->schedule_timer(e_limit,0,ticker); - if (timer_id < 0) - { - ACE_DEBUG((LM_DEBUG,"Supplier_EC (%t) could not schedule EC_Event_Limit timer\n")); - } rt.activate(); //need thread creation flags? or priority? - orb->run (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_Time_Value stop_time(300,0); + orb->run (stop_time ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; - // **************************************************************** - - //@BT: ORB shutting down; currently, this isn't expected to happen - //DSTRM_EVENT (MAIN_GROUP_FAM, CALL_SERVER_SHUTDOWN, 1, 0, NULL); - ACE_DEBUG((LM_DEBUG,"Supplier_EC thread %t CALL_SERVER_SHUTDOWN at %u\n",ACE_OS::gettimeofday().msec())); - DSTRM_EVENT (MAIN_GROUP_FAM, CALL_SERVER_SHUTDOWN, 0, 0, NULL); - - //@BT: Scheduler shuts down with the EC and ORB - //DSTRM_EVENT (MAIN_GROUP_FAM, SCHEDULER_SHUTDOWN, 1, 0, NULL); - ACE_DEBUG((LM_DEBUG,"Supplier_EC thread %t SCHEDULER_SHUTDOWN at %u\n",ACE_OS::gettimeofday().msec())); - DSTRM_EVENT (MAIN_GROUP_FAM, SCHEDULER_SHUTDOWN, 0, 0, NULL); - - // We should do a lot of cleanup (disconnect from the EC, - // deactivate all the objects with the POA, etc.) but this is - // just a simple demo so we are going to be lazy. +#ifdef ACE_HAS_DSUI + //@BT + //DSTRM_EVENT(MAIN_GROUP_FAM, STOP, 1, 0, NULL); + ACE_DEBUG((LM_DEBUG,"Supplier_EC thread %t STOP at %u\n",ACE_OS::gettimeofday().msec())); + DSTRM_EVENT(MAIN_GROUP_FAM, STOP, 1, 0, NULL); +#endif //ACE_HAS_DSUI - //@BT: Done clean up - //DSTRM_EVENT (MAIN_GROUP_FAM, AFTER_SERVER_SHUTDOWN, 1, 0, NULL); - ACE_DEBUG((LM_DEBUG,"Supplier_EC thread %t AFTER_SERVER_SHUTDOWN at %u\n",ACE_OS::gettimeofday().msec())); - DSTRM_EVENT (MAIN_GROUP_FAM, AFTER_SERVER_SHUTDOWN, 0, 0, NULL); + // **************************************************************** } ACE_CATCHANY { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Service"); + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Supplier_EC"); return 1; } ACE_ENDTRY; - //@BT - //DSTRM_EVENT(MAIN_GROUP_FAM, STOP, 1, 0, NULL); - ACE_DEBUG((LM_DEBUG,"Supplier_EC thread %t STOP at %u\n",ACE_OS::gettimeofday().msec())); - DSTRM_EVENT(MAIN_GROUP_FAM, STOP, 1, 0, NULL); - return 0; } diff --git a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/chain_test/Consumer_Supplier_EC.cpp b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/chain_test/Consumer_Supplier_EC.cpp index 81094c83f9f..e27f26db619 100644 --- a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/chain_test/Consumer_Supplier_EC.cpp +++ b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/chain_test/Consumer_Supplier_EC.cpp @@ -12,7 +12,6 @@ #include "orbsvcs/Event/EC_Kokyu_Factory.h" #include "orbsvcs/Time_Utilities.h" #include "orbsvcs/Event_Service_Constants.h" -#include "orbsvcs/Event/EC_Event_Limit.h" #include "tao/ORB_Core.h" #include "Kokyu_EC.h" @@ -153,18 +152,12 @@ main (int argc, char* argv[]) { //TAO_EC_Default_Factory::init_svcs (); #ifdef ACE_HAS_DSUI - ds_control* ds_cntl = new ds_control ("Chain_Test_Consumer_Supplier","consumer_supplier_enabled.dsui"); + ds_control ds_cntl("Chain_Test_Consumer_Supplier","consumer_supplier_enabled.dsui"); #endif //ACE_HAS_DSUI TAO_EC_Kokyu_Factory::init_svcs (); TAO_EC_Gateway_IIOP_Factory::init_svcs (); - //@BT - //DSTRM_EVENT(MAIN_GROUP_FAM, START,1,0,NULL); - ACE_Time_Value now(ACE_OS::gettimeofday()); - ACE_OS::printf("Consumer_Supplier_EC START at %isec %iusec\n",now.sec(),now.usec()); - DSTRM_EVENT(MAIN_GROUP_FAM, START,0,0,NULL); - ACE_DECLARE_NEW_CORBA_ENV; ACE_TRY { @@ -233,67 +226,54 @@ main (int argc, char* argv[]) supplier_ec.start(ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; +#ifdef ACE_HAS_DSUI //@BT: Timeouts start when orb starts, similar to starting the DT worker thread //DSTRM_EVENT (MAIN_GROUP_FAM, WORKER_ACTIVATED, 1, 0, NULL); - ACE_DEBUG((LM_DEBUG,"Consumer_Supplier_EC thread %t WORKER_ACTIVATED at %u\n",ACE_OS::gettimeofday().msec())); + ACE_DEBUG((LM_DEBUG,"Consumer_Supplier_EC (%P|%t) WORKER_ACTIVATED at %u\n",ACE_OS::gettimeofday().msec())); DSTRM_EVENT (MAIN_GROUP_FAM, WORKER_ACTIVATED, 0, 0, NULL); //DSTRM_EVENT (WORKER_GROUP_FAM, WORKER_STARTED, m_id, 0, NULL); - ACE_DEBUG((LM_DEBUG,"Consumer_Supplier_EC thread %t WORKER_STARTED at %u\n",ACE_OS::gettimeofday().msec())); + ACE_DEBUG((LM_DEBUG,"Consumer_Supplier_EC (%P|%t) WORKER_STARTED at %u\n",ACE_OS::gettimeofday().msec())); DSTRM_EVENT (WORKER_GROUP_FAM, WORKER_STARTED, 0, 0, NULL); -#ifdef ACE_HAS_DSUI - EC_Event_Limit* e_limit = new EC_Event_Limit (orb, ds_cntl); //will delete ds_cntl -#else - EC_Event_Limit* e_limit = new EC_Event_Limit (orb); + //@BT + //DSTRM_EVENT(MAIN_GROUP_FAM, START,1,0,NULL); + ACE_Time_Value now(ACE_OS::gettimeofday()); + ACE_OS::printf("Consumer_Supplier_EC START at %isec %iusec\n",now.sec(),now.usec()); + DSTRM_EVENT(MAIN_GROUP_FAM, START,0,0,NULL); #endif //ACE_HAS_DSUI - ACE_Time_Value ticker (305); - //orb->orb_core()->reactor()->schedule_timer(e_limit,0, ticker); - long timer_id = rt.reactor()->schedule_timer(e_limit,0,ticker); - if (timer_id < 0) - { - ACE_DEBUG((LM_DEBUG,"Consumer_Supplier_EC (%t) could not schedule EC_Event_Limit timer\n")); - } rt.activate(); //need thread creation flags? or priority? - orb->run (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_Time_Value stop_time(300,0); + orb->run (stop_time ACE_ENV_ARG_PARAMETER); + //orb->run (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; - // **************************************************************** - - //@BT: ORB shutting down; currently, this isn't expected to happen - //DSTRM_EVENT (MAIN_GROUP_FAM, CALL_SERVER_SHUTDOWN, 1, 0, NULL); - //ACE_DEBUG((LM_DEBUG,"Consumer_Supplier_EC thread %t CALL_SERVER_SHUTDOWN at %u\n",ACE_OS::gettimeofday().msec())); - //DSTRM_EVENT (MAIN_GROUP_FAM, CALL_SERVER_SHUTDOWN, 0, 0, NULL); +#ifdef ACE_HAS_DSUI + //@BT + //DSTRM_EVENT(MAIN_GROUP_FAM, STOP, 1, 0, NULL); + ACE_DEBUG((LM_DEBUG,"Consumer_Supplier_EC (%P|%t) STOP at %u\n",ACE_OS::gettimeofday().msec())); + DSTRM_EVENT(MAIN_GROUP_FAM, STOP, 1, 0, NULL); +#endif //ACE_HAS_DSUI - //@BT: Scheduler shuts down with the EC and ORB - //DSTRM_EVENT (MAIN_GROUP_FAM, SCHEDULER_SHUTDOWN, 1, 0, NULL); - //ACE_DEBUG((LM_DEBUG,"Consumer_Supplier_EC thread %t SCHEDULER_SHUTDOWN at %u\n",ACE_OS::gettimeofday().msec())); - //DSTRM_EVENT (MAIN_GROUP_FAM, SCHEDULER_SHUTDOWN, 0, 0, NULL); + // **************************************************************** // We should do a lot of cleanup (disconnect from the EC, // deactivate all the objects with the POA, etc.) but this is // just a simple demo so we are going to be lazy. - //@BT: Done clean up - //DSTRM_EVENT (MAIN_GROUP_FAM, AFTER_SERVER_SHUTDOWN, 1, 0, NULL); - //ACE_DEBUG((LM_DEBUG,"Consumer_Supplier_EC thread %t AFTER_SERVER_SHUTDOWN at %u\n",ACE_OS::gettimeofday().msec())); - //DSTRM_EVENT (MAIN_GROUP_FAM, AFTER_SERVER_SHUTDOWN, 0, 0, NULL); - + ACE_DEBUG((LM_DEBUG,"Consumer_Supplier_EC (%P|%t) Shutting down\n")); + orb->shutdown(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + orb->destroy(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; } ACE_CATCHANY { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Service"); + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Consumer_Supplier_EC"); return 1; } ACE_ENDTRY; - /* - //@BT - //DSTRM_EVENT(MAIN_GROUP_FAM, STOP, 1, 0, NULL); - ACE_DEBUG((LM_DEBUG,"Consumer_Supplier_EC thread %t STOP at %u\n",ACE_OS::gettimeofday().msec())); - DSTRM_EVENT(MAIN_GROUP_FAM, STOP, 1, 0, NULL); - - delete ds_cntl; - */ + return 0; } diff --git a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/chain_test/Supplier_EC.cpp b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/chain_test/Supplier_EC.cpp index e17fc465cb2..d4a3f5f63e3 100644 --- a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/chain_test/Supplier_EC.cpp +++ b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/chain_test/Supplier_EC.cpp @@ -12,7 +12,6 @@ #include "orbsvcs/Event/EC_Kokyu_Factory.h" #include "orbsvcs/Time_Utilities.h" #include "orbsvcs/Event_Service_Constants.h" -#include "orbsvcs/Event/EC_Event_Limit.h" #include "Kokyu_EC.h" #include "Consumer.h" @@ -166,22 +165,16 @@ int main (int argc, char* argv[]) { //TAO_EC_Default_Factory::init_svcs (); -#ifdef ACE_HAS_DSUI - ds_control* ds_cntl = new ds_control ("Chain_Test_Supplier","supplier_enabled.dsui"); -#endif //ACE_HAS_DSUI - TAO_EC_Kokyu_Factory::init_svcs (); TAO_EC_Gateway_IIOP_Factory::init_svcs (); - //@BT - //DSTRM_EVENT(MAIN_GROUP_FAM, START,1,0,NULL); - ACE_Time_Value now(ACE_OS::gettimeofday()); - ACE_OS::printf("Supplier_EC START at %isec %iusec\n",now.sec(),now.usec()); - DSTRM_EVENT(MAIN_GROUP_FAM, START,0,0,NULL); - ACE_DECLARE_NEW_CORBA_ENV; ACE_TRY { +#ifdef ACE_HAS_DSUI + ds_control ds_cntl("Chain_Test_Supplier","supplier_enabled.dsui"); +#endif //ACE_HAS_DSUI + // ORB initialization boiler plate... CORBA::ORB_var orb = CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER); @@ -189,10 +182,6 @@ main (int argc, char* argv[]) if (parse_args (argc, argv) == -1) { - ACE_ERROR ((LM_ERROR, - "Usage: %s -s <rms|muf|edf>" - "\n", - argv [0])); return 1; } @@ -246,68 +235,55 @@ main (int argc, char* argv[]) supplier_ec.start(ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; +#ifdef ACE_HAS_DSUI //@BT: Timeouts start when orb starts, similar to starting the DT worker thread //DSTRM_EVENT (MAIN_GROUP_FAM, WORKER_ACTIVATED, 1, 0, NULL); - ACE_DEBUG((LM_DEBUG,"Supplier_EC thread %t WORKER_ACTIVATED at %u\n",ACE_OS::gettimeofday().msec())); + ACE_DEBUG((LM_DEBUG,"Supplier_EC (%P|%t) WORKER_ACTIVATED at %u\n",ACE_OS::gettimeofday().msec())); DSTRM_EVENT (MAIN_GROUP_FAM, WORKER_ACTIVATED, 0, 0, NULL); //DSTRM_EVENT (WORKER_GROUP_FAM, WORKER_STARTED, m_id, 0, NULL); - ACE_DEBUG((LM_DEBUG,"Supplier_EC thread %t WORKER_STARTED at %u\n",ACE_OS::gettimeofday().msec())); + ACE_DEBUG((LM_DEBUG,"Supplier_EC (%P|%t) WORKER_STARTED at %u\n",ACE_OS::gettimeofday().msec())); DSTRM_EVENT (WORKER_GROUP_FAM, WORKER_STARTED, 0, 0, NULL); -#ifdef ACE_HAS_DSUI - EC_Event_Limit* e_limit = new EC_Event_Limit (orb, ds_cntl); //will delete ds_cntl -#else - EC_Event_Limit* e_limit = new EC_Event_Limit (orb); + //@BT + //DSTRM_EVENT(MAIN_GROUP_FAM, START,1,0,NULL); + ACE_Time_Value now(ACE_OS::gettimeofday()); + ACE_OS::printf("Consumer_Supplier_EC START at %isec %iusec\n",now.sec(),now.usec()); + DSTRM_EVENT(MAIN_GROUP_FAM, START,0,0,NULL); #endif //ACE_HAS_DSUI - ACE_Time_Value ticker (100);//310); - //orb->orb_core()->reactor()->schedule_timer(e_limit,0, ticker); - long timer_id = rt.reactor()->schedule_timer(e_limit,0,ticker); - if (timer_id < 0) - { - ACE_DEBUG((LM_DEBUG,"Supplier_EC (%t) could not schedule EC_Event_Limit timer\n")); - } rt.activate(); //need thread creation flags? or priority? - orb->run (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_Time_Value stop_time(10,0); + //ACE_Time_Value stop_time(300,0); + orb->run (stop_time ACE_ENV_ARG_PARAMETER); + //orb->run (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; - // **************************************************************** - - //@BT: ORB shutting down; currently, this isn't expected to happen - //DSTRM_EVENT (MAIN_GROUP_FAM, CALL_SERVER_SHUTDOWN, 1, 0, NULL); - //ACE_DEBUG((LM_DEBUG,"Supplier_EC thread %t CALL_SERVER_SHUTDOWN at %u\n",ACE_OS::gettimeofday().msec())); - //DSTRM_EVENT (MAIN_GROUP_FAM, CALL_SERVER_SHUTDOWN, 0, 0, NULL); +#ifdef ACE_HAS_DSUI + //@BT + //DSTRM_EVENT(MAIN_GROUP_FAM, STOP, 1, 0, NULL); + ACE_DEBUG((LM_DEBUG,"Consumer_Supplier_EC (%P|%t) STOP at %u\n",ACE_OS::gettimeofday().msec())); + DSTRM_EVENT(MAIN_GROUP_FAM, STOP, 1, 0, NULL); +#endif //ACE_HAS_DSUI - //@BT: Scheduler shuts down with the EC and ORB - //DSTRM_EVENT (MAIN_GROUP_FAM, SCHEDULER_SHUTDOWN, 1, 0, NULL); - //ACE_DEBUG((LM_DEBUG,"Supplier_EC thread %t SCHEDULER_SHUTDOWN at %u\n",ACE_OS::gettimeofday().msec())); - //DSTRM_EVENT (MAIN_GROUP_FAM, SCHEDULER_SHUTDOWN, 0, 0, NULL); + // **************************************************************** // We should do a lot of cleanup (disconnect from the EC, // deactivate all the objects with the POA, etc.) but this is // just a simple demo so we are going to be lazy. - //@BT: Done clean up - //DSTRM_EVENT (MAIN_GROUP_FAM, AFTER_SERVER_SHUTDOWN, 1, 0, NULL); - //ACE_DEBUG((LM_DEBUG,"Supplier_EC thread %t AFTER_SERVER_SHUTDOWN at %u\n",ACE_OS::gettimeofday().msec())); - //DSTRM_EVENT (MAIN_GROUP_FAM, AFTER_SERVER_SHUTDOWN, 0, 0, NULL); - + ACE_DEBUG((LM_DEBUG,"Supplier_EC (%P|%t) Shutting down\n")); + orb->shutdown(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + orb->destroy(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; } ACE_CATCHANY { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Service"); + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Supplier_EC"); return 1; } ACE_ENDTRY; - /* - //@BT - //DSTRM_EVENT(MAIN_GROUP_FAM, STOP, 1, 0, NULL); - ACE_DEBUG((LM_DEBUG,"Supplier_EC thread %t STOP at %u\n",ACE_OS::gettimeofday().msec())); - DSTRM_EVENT(MAIN_GROUP_FAM, STOP, 1, 0, NULL); - - //Clean up DSUI stuff - delete ds_cntl; - */ + return 0; } diff --git a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/fan_test/Consumer_EC.cpp b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/fan_test/Consumer_EC.cpp index 8dc4901816a..ede6fab6f1e 100644 --- a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/fan_test/Consumer_EC.cpp +++ b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/fan_test/Consumer_EC.cpp @@ -13,7 +13,6 @@ #include "orbsvcs/Event/EC_Kokyu_Factory.h" #include "orbsvcs/Time_Utilities.h" #include "orbsvcs/Event_Service_Constants.h" -#include "orbsvcs/Event/EC_Event_Limit.h" #include "tao/ORB_Core.h" #include "Kokyu_EC.h" @@ -192,24 +191,15 @@ int main (int argc, char* argv[]) { //TAO_EC_Default_Factory::init_svcs (); -#ifdef ACE_HAS_DSUI - ds_control* ds_cntl = new ds_control ("Fan_Test_Consumer","consumer_enabled.dsui"); -#endif // ACE_HAS_DSUI - TAO_EC_Kokyu_Factory::init_svcs (); - //@BT -#ifdef ACE_HAS_DSUI - // ACE_Object_Counter::object_id oid = ACE_OBJECT_COUNTER->increment(); - // DSTRM_EVENT(MAIN_GROUP_FAM, START, 1, sizeof(EC_Event_Counter::event_id), (char*)&eid); - ACE_Time_Value now(ACE_OS::gettimeofday()); - ACE_OS::printf("Consumer_EC START at %isec %iusec\n",now.sec(),now.usec()); - DSTRM_EVENT(MAIN_GROUP_FAM, START, 0, 0, NULL); -#endif //ACE_HAS_DSUI - ACE_DECLARE_NEW_CORBA_ENV; ACE_TRY { +#ifdef ACE_HAS_DSUI + ds_control ds_cntl("Fan_Test_Consumer","consumer_enabled.dsui"); +#endif // ACE_HAS_DSUI + // ORB initialization boiler plate... CORBA::ORB_var orb = CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER); @@ -217,8 +207,6 @@ main (int argc, char* argv[]) if (parse_args (argc, argv) == -1) { - ACE_ERROR ((LM_ERROR, - "Usage: Service [-o IOR_file_name]\n")); return 1; } @@ -286,24 +274,28 @@ main (int argc, char* argv[]) //DSTRM_EVENT (MAIN_GROUP_FAM, WORKER_ACTIVATED, 1, 0, NULL); ACE_DEBUG((LM_DEBUG,"Consumer_EC thread %t WORKER_ACTIVATED at %u\n",ACE_OS::gettimeofday().msec())); DSTRM_EVENT (MAIN_GROUP_FAM, WORKER_ACTIVATED, 0, 0, NULL); -#endif //ACE_HAS_DSUI -#ifdef ACE_HAS_DSUI - EC_Event_Limit* e_limit = new EC_Event_Limit (orb, ds_cntl); -#else - EC_Event_Limit* e_limit = new EC_Event_Limit (orb); + //@BT + // ACE_Object_Counter::object_id oid = ACE_OBJECT_COUNTER->increment(); + // DSTRM_EVENT(MAIN_GROUP_FAM, START, 1, sizeof(EC_Event_Counter::event_id), (char*)&eid); + ACE_Time_Value now(ACE_OS::gettimeofday()); + ACE_OS::printf("Consumer_EC START at %isec %iusec\n",now.sec(),now.usec()); + DSTRM_EVENT(MAIN_GROUP_FAM, START, 0, 0, NULL); #endif //ACE_HAS_DSUI - ACE_Time_Value ticker (125); - long timer_id = rt.reactor()->schedule_timer(e_limit,0, ticker); - if (timer_id < 0) - { - ACE_DEBUG((LM_DEBUG,"Consumer_EC (%t) Could not schedule EC_Event_Limit timeout\n")); - } rt.activate(); //need thread creation flags? or priority? - orb->run (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_Time_Value stop_time(300,0); + orb->run (stop_time ACE_ENV_ARG_PARAMETER); + //orb->run (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; +#ifdef ACE_HAS_DSUI + //@BT + //DSTRM_EVENT(MAIN_GROUP_FAM, STOP, 1, 0, NULL); + ACE_DEBUG((LM_DEBUG,"Consumer_EC thread %t STOP at %u\n",ACE_OS::gettimeofday().msec())); + DSTRM_EVENT(MAIN_GROUP_FAM, STOP, 1, 0, NULL); +#endif //ACE_HAS_DSUI + // **************************************************************** // We should do a lot of cleanup (disconnect from the EC, @@ -313,7 +305,7 @@ main (int argc, char* argv[]) } ACE_CATCHANY { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Consumer_EC - Service"); + ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Consumer_EC"); return 1; } ACE_ENDTRY; diff --git a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/fan_test/Kokyu_EventService.cpp b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/fan_test/Kokyu_EventService.cpp deleted file mode 100644 index d6b3bd80d8f..00000000000 --- a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/fan_test/Kokyu_EventService.cpp +++ /dev/null @@ -1,318 +0,0 @@ -// $Id$ - -#include "ace/SString.h" -#include "ace/Get_Opt.h" -#include "ace/Sched_Params.h" - -#include "orbsvcs/Event/EC_Kokyu_Factory.h" -#include "orbsvcs/Time_Utilities.h" -#include "orbsvcs/Event_Service_Constants.h" - -#include "Kokyu_EC.h" -#include "Consumer.h" -#include "Supplier.h" - -#include <dsui_types.h> -#include "federated_dsui_families.h" - -namespace -{ - int config_run = 0; - ACE_CString sched_type ="rms"; - FILE * ior_output_file; -} - -inline RtecScheduler::Period_t time_val_to_period (const ACE_Time_Value &tv) -{ - //100s of nanoseconds - return (tv.sec () * 1000000 + tv.usec ())*10; -} - -int parse_args (int argc, char *argv[]); - -int -main (int argc, char* argv[]) -{ - //TAO_EC_Default_Factory::init_svcs (); - ds_control ctrl ("Federated_Test_Kokyu","federated_enabled.dsui"); - - TAO_EC_Kokyu_Factory::init_svcs (); - - - ACE_DECLARE_NEW_CORBA_ENV; - ACE_TRY - { - // ORB initialization boiler plate... - CORBA::ORB_var orb = - CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (parse_args (argc, argv) == -1) - { - ACE_ERROR ((LM_ERROR, - "Usage: Service [-o IOR_file_name]\n")); - return 1; - } - - CORBA::Object_var object = - orb->resolve_initial_references ("RootPOA" ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - PortableServer::POA_var poa = - PortableServer::POA::_narrow (object.in () ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - PortableServer::POAManager_var poa_manager = - poa->the_POAManager (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - poa_manager->activate (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - // **************************************************************** - - Kokyu_EC kokyu_ec; - if (kokyu_ec.init(sched_type.c_str(), poa.in()) == -1) - ACE_ERROR_RETURN((LM_ERROR, "Unable to initialize Kokyu_EC"), 1); - - // **************************************************************** - RtecEventComm::EventSourceID supplier_id1 = 1, supplier_id2 = 2; - RtecEventChannelAdmin::ProxyPushConsumer_var consumer_proxy1, consumer_proxy2; - Supplier supplier_impl1(supplier_id1); - Supplier supplier_impl2(supplier_id2); - RtecEventComm::PushSupplier_var supplier1, supplier2; - - supplier1 = supplier_impl1._this(ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - supplier2 = supplier_impl2._this(ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - RtecScheduler::handle_t supplier1_rt_info = - kokyu_ec.register_supplier("supplier1", - supplier_id1, - ACE_ES_EVENT_UNDEFINED, - supplier1, - consumer_proxy1 - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - RtecScheduler::handle_t supplier2_rt_info = - kokyu_ec.register_supplier("supplier2", - supplier_id2, - ACE_ES_EVENT_UNDEFINED+1, - supplier2, - consumer_proxy2 - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - supplier_impl1.set_consumer_proxy(consumer_proxy1.in()); - supplier_impl2.set_consumer_proxy(consumer_proxy2.in()); - - ACE_DEBUG ((LM_DEBUG, "suppliers connected\n")); - - // ************************************************************* - // Create a consumer, intialize its RT_Info structures, and - // connnect to the event channel.... - - Consumer consumer_impl1, consumer_impl2; - RtecEventChannelAdmin::ProxyPushSupplier_var proxy_supplier1, - proxy_supplier2; - - //consumer's rate will get propagated from the supplier. - //so no need to specify a period here. Specifying - //criticality is crucial since it propagates from - //consumer to supplier. - ACE_Time_Value tv (0,0); - TimeBase::TimeT tmp; - ORBSVCS_Time::Time_Value_to_TimeT (tmp, tv); - - RtEventChannelAdmin::SchedInfo info; - info.criticality = RtecScheduler::VERY_LOW_CRITICALITY; - info.period = time_val_to_period (tv); - info.importance = RtecScheduler::VERY_LOW_IMPORTANCE; - info.threads = 0; - info.info_type = RtecScheduler::OPERATION; - - RtecEventComm::PushConsumer_var consumer1 = - consumer_impl1._this (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - - RtecScheduler::handle_t consumer1_rt_info = - kokyu_ec.register_consumer("consumer1", - info, - ACE_ES_EVENT_UNDEFINED, - consumer1.in(), - proxy_supplier1.out() - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - info.criticality = RtecScheduler::VERY_HIGH_CRITICALITY; - info.importance = RtecScheduler::VERY_HIGH_IMPORTANCE; - - RtecEventComm::PushConsumer_var consumer2 = - consumer_impl2._this (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - RtecScheduler::handle_t consumer2_rt_info = - kokyu_ec.register_consumer("consumer2", - info, - ACE_ES_EVENT_UNDEFINED + 1, - consumer2.in(), - proxy_supplier2.out() - ACE_ENV_ARG_PARAMETER); - - - - - // **************************************************************** - - //Timer Registration part - - //Timeout consumers for the two suppliers. - Timeout_Consumer timeout_consumer_impl1(&supplier_impl1); - Timeout_Consumer timeout_consumer_impl2(&supplier_impl2); - - RtecEventChannelAdmin::ProxyPushSupplier_var timeout_supplier_proxy1, - timeout_supplier_proxy2; - RtecEventComm::PushConsumer_var safe_timeout_consumer1, - safe_timeout_consumer2; - - safe_timeout_consumer1= timeout_consumer_impl1._this(ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - safe_timeout_consumer2= timeout_consumer_impl2._this(ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - //Period = 1sec - tv.set (1,0); - ORBSVCS_Time::Time_Value_to_TimeT (tmp, tv); - - info.criticality = RtecScheduler::VERY_LOW_CRITICALITY; - info.period = time_val_to_period (tv); - info.importance = RtecScheduler::VERY_LOW_IMPORTANCE; - info.threads = 0; - info.info_type = RtecScheduler::OPERATION; - - RtecScheduler::handle_t supplier1_timeout_consumer_rt_info = - kokyu_ec.register_consumer("supplier1_timeout_consumer", - info, - ACE_ES_EVENT_INTERVAL_TIMEOUT, - safe_timeout_consumer1.in(), - timeout_supplier_proxy1.out() - ACE_ENV_ARG_PARAMETER); - - - tv.set (3, 0); - ORBSVCS_Time::Time_Value_to_TimeT (tmp, tv); - info.criticality = RtecScheduler::VERY_HIGH_CRITICALITY; - info.period = time_val_to_period (tv); - info.importance = RtecScheduler::VERY_HIGH_IMPORTANCE; - - RtecScheduler::handle_t supplier2_timeout_consumer_rt_info = - kokyu_ec.register_consumer("supplier2_timeout_consumer", - info, - ACE_ES_EVENT_INTERVAL_TIMEOUT, - safe_timeout_consumer2.in(), - timeout_supplier_proxy2.out() - ACE_ENV_ARG_PARAMETER); - - ACE_DEBUG ((LM_DEBUG, "timeout consumers connected\n")); - - // **************************************************************** - //Registering dependency between timeout consumers and our suppliers - //with the scheduler - - kokyu_ec.add_dependency (supplier1_timeout_consumer_rt_info, - supplier1_rt_info, - 1, - RtecBase::TWO_WAY_CALL - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - kokyu_ec.add_dependency (supplier2_timeout_consumer_rt_info, - supplier2_rt_info, - 1, - RtecBase::TWO_WAY_CALL - ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - - // **************************************************************** - RtEventChannelAdmin::RtSchedEventChannel_var kokyu_ec_ior = - kokyu_ec._this(ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_TRY_CHECK; - - CORBA::String_var ior = orb->object_to_string(kokyu_ec_ior.in() - ACE_ENV_ARG_PARAMETER); - - ACE_OS::fprintf(ior_output_file, ior.in()); - ACE_OS::fclose(ior_output_file); - - - // **************************************************************** - - // At this point the consumer and supplier are connected to the - // EC, they have provided their QoS info to the Scheduling - // Service and the EC has informed the Scheduler about the - // dependencies between them. - // We can now compute the schedule for this configuration... - - // The schedule is returned in this variables.... - - - // **************************************************************** - - ACE_hthread_t thr_handle; - ACE_Thread::self (thr_handle); - - int prio = ACE_Sched_Params::priority_max (ACE_SCHED_FIFO); - ACE_OS::thr_setprio (thr_handle, prio); - - - orb->run (ACE_ENV_SINGLE_ARG_PARAMETER); - - // **************************************************************** - - // We should do a lot of cleanup (disconnect from the EC, - // deactivate all the objects with the POA, etc.) but this is - // just a simple demo so we are going to be lazy. - - } - ACE_CATCHANY - { - ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "Kokyu_EventService - Service"); - return 1; - } - ACE_ENDTRY; - return 0; -} - -// **************************************************************** - -int parse_args (int argc, char *argv[]) -{ - ACE_Get_Opt get_opts (argc, argv, "cs:o:"); - int c; - - while ((c = get_opts ()) != -1) - switch (c) - { - case 'o': - ior_output_file = ACE_OS::fopen (get_opts.opt_arg (), "w"); - if (ior_output_file == 0) - ACE_ERROR_RETURN ((LM_ERROR, - "Unable to open %s for writing: %p\n", - get_opts.opt_arg ()), -1); - break; - case 's': - sched_type = ACE_TEXT_ALWAYS_CHAR(get_opts.opt_arg ()); - break; - - case '?': - default: - ACE_ERROR_RETURN ((LM_ERROR, - "usage: %s -s <rms|muf>" - "\n", - argv [0]), - -1); - } - // Indicates sucessful parsing of the command line - return 0; -} diff --git a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/fan_test/Supplier_EC.cpp b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/fan_test/Supplier_EC.cpp index 9b632659230..d205866fef5 100644 --- a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/fan_test/Supplier_EC.cpp +++ b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/fan_test/Supplier_EC.cpp @@ -14,7 +14,6 @@ #include "orbsvcs/Event/EC_Kokyu_Factory.h" #include "orbsvcs/Time_Utilities.h" #include "orbsvcs/Event_Service_Constants.h" -#include "orbsvcs/Event/EC_Event_Limit.h" #include "tao/ORB_Core.h" #include "Kokyu_EC.h" @@ -211,22 +210,16 @@ int main (int argc, char* argv[]) { //TAO_EC_Default_Factory::init_svcs (); -#ifdef ACE_HAS_DSUI - ds_control* ds_cntl = new ds_control ("Fan_Test_Supplier","supplier_enabled.dsui"); -#endif //ACE_HAS_DSUI - TAO_EC_Kokyu_Factory::init_svcs (); TAO_EC_Gateway_IIOP_Factory::init_svcs (); - //@BT - //DSTRM_EVENT(MAIN_GROUP_FAM, START,1,0,NULL); - ACE_Time_Value now(ACE_OS::gettimeofday()); - ACE_OS::printf("Supplier_EC START at %isec %iusec\n",now.sec(),now.usec()); - DSTRM_EVENT(MAIN_GROUP_FAM, START,0,0,NULL); - ACE_DECLARE_NEW_CORBA_ENV; ACE_TRY { +#ifdef ACE_HAS_DSUI + ds_control ds_cntl("Fan_Test_Supplier","supplier_enabled.dsui"); +#endif //ACE_HAS_DSUI + // ORB initialization boiler plate... CORBA::ORB_var orb = CORBA::ORB_init (argc, argv, "" ACE_ENV_ARG_PARAMETER); @@ -292,6 +285,7 @@ main (int argc, char* argv[]) supplier_ec.start(ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; +#ifdef ACE_HAS_DSUI //@BT: Timeouts start when orb starts, similar to starting the DT worker thread //DSTRM_EVENT (MAIN_GROUP_FAM, WORKER_ACTIVATED, 1, 0, NULL); ACE_DEBUG((LM_DEBUG,"Supplier_EC thread %t WORKER_ACTIVATED at %u\n",ACE_OS::gettimeofday().msec())); @@ -300,44 +294,31 @@ main (int argc, char* argv[]) ACE_DEBUG((LM_DEBUG,"Supplier_EC thread %t WORKER_STARTED at %u\n",ACE_OS::gettimeofday().msec())); DSTRM_EVENT (WORKER_GROUP_FAM, WORKER_STARTED, 0, 0, NULL); -#ifdef ACE_HAS_DSUI - EC_Event_Limit* e_limit = new EC_Event_Limit (orb, ds_cntl); -#else - EC_Event_Limit* e_limit = new EC_Event_Limit (orb); + //@BT + //DSTRM_EVENT(MAIN_GROUP_FAM, START,1,0,NULL); + ACE_Time_Value now(ACE_OS::gettimeofday()); + ACE_OS::printf("Supplier_EC START at %isec %iusec\n",now.sec(),now.usec()); + DSTRM_EVENT(MAIN_GROUP_FAM, START,0,0,NULL); #endif //ACE_HAS_DSUI - ACE_Time_Value ticker (120); - //orb->orb_core()->reactor()->schedule_timer(e_limit,0, ticker); - long timer_id = rt.reactor()->schedule_timer(e_limit,0,ticker); - if (timer_id < 0) - { - ACE_DEBUG((LM_DEBUG,"Supplier_EC (%t) could not schedule EC_Event_Limit timer\n")); - } rt.activate(); //need thread creation flags? or priority? - orb->run (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_Time_Value stop_time(300,0); + orb->run (stop_time ACE_ENV_ARG_PARAMETER); + //orb->run (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; +#ifdef ACE_HAS_DSUI + //@BT + //DSTRM_EVENT(MAIN_GROUP_FAM, STOP, 1, 0, NULL); + ACE_DEBUG((LM_DEBUG,"Supplier_EC thread %t STOP at %u\n",ACE_OS::gettimeofday().msec())); + DSTRM_EVENT(MAIN_GROUP_FAM, STOP, 1, 0, NULL); +#endif //ACE_HAS_DSUI // **************************************************************** - //@BT: ORB shutting down; currently, this isn't expected to happen - //DSTRM_EVENT (MAIN_GROUP_FAM, CALL_SERVER_SHUTDOWN, 1, 0, NULL); - ACE_DEBUG((LM_DEBUG,"Supplier_EC thread %t CALL_SERVER_SHUTDOWN at %u\n",ACE_OS::gettimeofday().msec())); - DSTRM_EVENT (MAIN_GROUP_FAM, CALL_SERVER_SHUTDOWN, 0, 0, NULL); - - //@BT: Scheduler shuts down with the EC and ORB - //DSTRM_EVENT (MAIN_GROUP_FAM, SCHEDULER_SHUTDOWN, 1, 0, NULL); - ACE_DEBUG((LM_DEBUG,"Supplier_EC thread %t SCHEDULER_SHUTDOWN at %u\n",ACE_OS::gettimeofday().msec())); - DSTRM_EVENT (MAIN_GROUP_FAM, SCHEDULER_SHUTDOWN, 0, 0, NULL); - // We should do a lot of cleanup (disconnect from the EC, // deactivate all the objects with the POA, etc.) but this is // just a simple demo so we are going to be lazy. - //@BT: Done clean up - //DSTRM_EVENT (MAIN_GROUP_FAM, AFTER_SERVER_SHUTDOWN, 1, 0, NULL); - ACE_DEBUG((LM_DEBUG,"Supplier_EC thread %t AFTER_SERVER_SHUTDOWN at %u\n",ACE_OS::gettimeofday().msec())); - DSTRM_EVENT (MAIN_GROUP_FAM, AFTER_SERVER_SHUTDOWN, 0, 0, NULL); - } ACE_CATCHANY { @@ -346,11 +327,6 @@ main (int argc, char* argv[]) } ACE_ENDTRY; - //@BT - //DSTRM_EVENT(MAIN_GROUP_FAM, STOP, 1, 0, NULL); - ACE_DEBUG((LM_DEBUG,"Supplier_EC thread %t STOP at %u\n",ACE_OS::gettimeofday().msec())); - DSTRM_EVENT(MAIN_GROUP_FAM, STOP, 1, 0, NULL); - return 0; } |