From b62e23d35bb1cbc293f3eb145a3bf0aa1f5cb85b Mon Sep 17 00:00:00 2001 From: thrall Date: Thu, 17 Jun 2004 02:21:07 +0000 Subject: Incorporated mode checking into subtest execution time, fixed some other stuff --- .../Federated_Kokyu/dynamic_topology_test/Client | 2 +- .../dynamic_topology_test/Consumer.cpp | 40 ++--- .../dynamic_topology_test/Dynamic_Consumer.cpp | 164 ++++++++++----------- .../dynamic_topology_test/Dynamic_Consumer.h | 17 +-- .../dynamic_topology_test/Dynamic_Supplier.cpp | 3 +- .../dynamic_topology_test/Dynamic_Supplier.h | 2 +- .../dynamic_topology_test/Supplier.cpp | 14 +- .../dynamic_topology_test/Supplier.h | 2 +- .../dynamic_topology_test/Supplier_EC.cpp | 17 ++- .../federated_dsui_families.h | 8 +- .../dynamic_topology_test/federated_dsui_table.h | 6 +- .../dynamic_topology_test/federated_kokyu.dsui | 1 + .../dynamic_topology_test/federated_kokyu.xml | 1 + 13 files changed, 131 insertions(+), 146 deletions(-) diff --git a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Client b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Client index 25befde4485..0a02ae75620 100755 --- a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Client +++ b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Client @@ -1,3 +1,3 @@ #!/bin/bash -./Supplier_EC -s edf -o client.ior -i middle1.ior -i middle2.ior +./Supplier_EC -s edf -o client.ior -i middle1.ior -i middle2.ior $@ diff --git a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Consumer.cpp b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Consumer.cpp index 97da36d9be2..17fac318880 100644 --- a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Consumer.cpp +++ b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Consumer.cpp @@ -23,7 +23,8 @@ ACE_RCSID(EC_Examples, Consumer, "$Id$") Consumer::Consumer (SourceID normal_type, SourceID ft_type, Supplier *fwddest, Service_Handler * handler) - : worktime_(0,0) + : deadline_missed_(0) + , worktime_(0,0) , fwddest_(fwddest) , handler_(handler) , norm_type_(normal_type) @@ -35,7 +36,8 @@ Consumer::Consumer (SourceID normal_type, SourceID ft_type, ACE_Time_Value& worktime, Supplier *fwddest, Service_Handler *handler) - : worktime_(worktime) + : deadline_missed_(0) + , worktime_(worktime) , fwddest_(fwddest) , handler_(handler) , norm_type_(normal_type) @@ -62,22 +64,6 @@ Consumer::push (const RtecEventComm::EventSet& events ACE_DEBUG ((LM_DEBUG, "Consumer (%P|%t) we received event type %d\n", events[0].header.type)); - Supplier::mode_t mode; - if (events[0].header.type == this->ft_type_) - { - mode = Supplier::FAULT_TOLERANT; - } - else if (events[0].header.type == this->norm_type_) - { - mode = Supplier::NORMAL; - } - else - { - //default - ACE_DEBUG((LM_DEBUG,"Consumer (%P|%t) received unknown type %d; ignoring\n",events[0].header.type)); - return; - } - if (this->handler_ != 0) { ACE_DEBUG((LM_DEBUG,"Consumer (%P|%t) calling handle_service_start()\n")); @@ -100,6 +86,22 @@ Consumer::push (const RtecEventComm::EventSet& events ACE_TIMEPROBE("START_SERVICE"); DSTRM_EVENT (TEST_ONE_FAM, START_SERVICE, 0, sizeof(Object_ID), (char*)&oid); + Supplier::mode_t mode; + if (events[0].header.type == this->ft_type_) + { + mode = Supplier::FAULT_TOLERANT; + } + else if (events[0].header.type == this->norm_type_) + { + mode = Supplier::NORMAL; + } + else + { + //default + ACE_DEBUG((LM_DEBUG,"Consumer (%P|%t) received unknown type %d; ignoring\n",events[0].header.type)); + return; + } + ACE_High_Res_Timer timer; ACE_Time_Value elapsed_time; @@ -176,7 +178,7 @@ Consumer::push (const RtecEventComm::EventSet& events //trigger next subtask; we assume we are the only ones who set the Supplier's mode! ACE_DEBUG((LM_DEBUG,"Consumer (%P|%t) triggering next subtask\n")); this->fwddest_->mode(mode); - this->fwddest_->timeout_occured(ACE_ENV_SINGLE_ARG_PARAMETER); + this->fwddest_->timeout_occured(oid ACE_ENV_ARG_PARAMETER); } if (this->handler_ != 0) diff --git a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Dynamic_Consumer.cpp b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Dynamic_Consumer.cpp index e497b6e7b5c..1450b37fc75 100644 --- a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Dynamic_Consumer.cpp +++ b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Dynamic_Consumer.cpp @@ -31,8 +31,7 @@ Dynamic_Consumer::Dynamic_Consumer (SourceID normal_type, : Consumer(normal_type,ft_type,worktime,fwddest,handler) , norm_type2_(normal_type2) , ft_type2_(ft_type2) - , received_ft_type1_(false) - , received_ft_type2_(false) + , window_(1) { } @@ -45,8 +44,7 @@ Dynamic_Consumer::Dynamic_Consumer (SourceID normal_type, : Consumer(normal_type,ft_type,fwddest,handler) , norm_type2_(normal_type2) , ft_type2_(ft_type2) - , received_ft_type1_(false) - , received_ft_type2_(false) + , window_(1) { } @@ -68,77 +66,57 @@ Dynamic_Consumer::push (const RtecEventComm::EventSet& events //WARNING: We are assuming only one event is pushed at a time! - ACE_DEBUG ((LM_DEBUG, "Dynamic_Consumer (%P|%t) we received event type %d\n", + ACE_DEBUG ((LM_DEBUG, "Dynamic_Consumer (%P|%t) we received event type %i\n", events[0].header.type)); + if (this->handler_ != 0) + { + ACE_DEBUG((LM_DEBUG,"Dynamic_Consumer (%P|%t) calling handle_service_start()\n")); + this->handler_->handle_service_start(ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_DEBUG((LM_DEBUG,"Dynamic_Consumer (%P|%t) handle_service_start() DONE\n")); + } + + //@BT INSTRUMENT with event ID: EVENT_WORK_START Measure time + //when work triggered by event starts. + //DSTRM_EVENT (TEST_ONE_FAM, START_SERVICE, guid, 0, NULL); + ACE_DEBUG((LM_DEBUG,"Dynamic_Consumer (%P|%t) START_SERVICE at %u\n",ACE_OS::gettimeofday().msec())); + + Object_ID oid; + oid.id = events[0].header.eid.id; + oid.tid = events[0].header.eid.tid; + oid.pid = events[0].header.eid.pid; + oid.queue_id = events[0].header.eid.queue_id; + oid.type = events[0].header.type; + + ACE_TIMEPROBE("START_SERVICE"); + DSTRM_EVENT (TEST_ONE_FAM, START_SERVICE, 0, sizeof(Object_ID), (char*)&oid); + Supplier::mode_t mode; if (events[0].header.type == this->ft_type_ || events[0].header.type == this->ft_type2_) { mode = Supplier::FAULT_TOLERANT; - if (events[0].header.type == this->ft_type_) - { - if (this->received_ft_type1_) - { - ACE_DEBUG((LM_DEBUG,"Dynamic_Consumer (%P|%t) received second event (type %d) before receiving type %d!\n",this->ft_type_,this->ft_type2_)); - } - this->received_ft_type1_ = true; - } - else { - //must be ft_type2_ - if (this->received_ft_type2_) - { - ACE_DEBUG((LM_DEBUG,"Dynamic_Consumer (%P|%t) received second event (type %d) before receiving type %d!\n",this->ft_type2_,this->ft_type_)); - } - this->received_ft_type2_ = true; - } } else if (events[0].header.type == this->norm_type_ || events[0].header.type == this->norm_type2_) { mode = Supplier::NORMAL; - if (this->received_ft_type1_ || this->received_ft_type2_) { - ACE_DEBUG((LM_DEBUG,"Dynamic_Consumer (%P|%t) mode is NORMAL, but both FAULT_TOLERANT events not received!\n")); - } } else { //default - ACE_DEBUG((LM_DEBUG,"Dynamic_Consumer (%P|%t) received unknown type %d; ignoring\n",events[0].header.type)); + ACE_DEBUG((LM_DEBUG,"Dynamic_Consumer (%P|%t) received unknown type %i; ignoring\n",events[0].header.type)); return; } - if (this->handler_ != 0) - { - ACE_DEBUG((LM_DEBUG,"Dynamic_Consumer (%P|%t) calling handle_service_start()\n")); - this->handler_->handle_service_start(ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_DEBUG((LM_DEBUG,"Dynamic_Consumer (%P|%t) handle_service_start() DONE\n")); - } - - //NOTE: We don't trigger START/STOP_SERVICE events or handle fwddest if - //not ready because if we aren't ready, it's just overhead. - //We are ready only if we're in NORMAL mode (we should receive only one - //event) or if we're in FAULT_TOLERANT mode and have received both events. + //We are ready only if we're in NORMAL mode (we should receive only + //one event) or if we're in FAULT_TOLERANT mode and have NOT + //received an event from this iteration before. if (Supplier::NORMAL == mode || (Supplier::FAULT_TOLERANT == mode && - this->received_ft_type1_ && this->received_ft_type2_)) + this->window_ == events[0].header.eid.id)) { - //@BT INSTRUMENT with event ID: EVENT_WORK_START Measure time - //when work triggered by event starts. - //DSTRM_EVENT (TEST_ONE_FAM, START_SERVICE, guid, 0, NULL); - ACE_DEBUG((LM_DEBUG,"Dynamic_Consumer (%P|%t) START_SERVICE at %u\n",ACE_OS::gettimeofday().msec())); - - Object_ID oid; - oid.id = events[0].header.eid.id; - oid.tid = events[0].header.eid.tid; - oid.pid = events[0].header.eid.pid; - oid.queue_id = events[0].header.eid.queue_id; - oid.type = events[0].header.type; - - ACE_TIMEPROBE("START_SERVICE"); - DSTRM_EVENT (TEST_ONE_FAM, START_SERVICE, 0, sizeof(Object_ID), (char*)&oid); - ACE_High_Res_Timer timer; ACE_Time_Value elapsed_time; @@ -172,7 +150,8 @@ Dynamic_Consumer::push (const RtecEventComm::EventSet& events timer.elapsed_time (elapsed_time); //total elapsed time TimeBase::TimeT now; - ORBSVCS_Time::Time_Value_to_TimeT (now, ACE_OS::gettimeofday ()); + ACE_Time_Value now_tv(ACE_OS::gettimeofday()); + ORBSVCS_Time::Time_Value_to_TimeT (now, now_tv); if(now > events[0].header.deadline ) { this->deadline_missed_++; @@ -180,51 +159,64 @@ Dynamic_Consumer::push (const RtecEventComm::EventSet& events //@BT INSTRUMENT with event ID: EVENT_WORK_DEADLINE_MISSED Measure time when //work triggered by event finishes and deadline missed. //DSTRM_EVENT (TEST_ONE_FAM, DEADLINE_MISSED, guid, strlen(extra_info), extra_info); - ACE_DEBUG((LM_DEBUG,"Dynamic_Consumer in thread %t STOP_SERVICE (DEADLINE_MISSED) at %u\n",ACE_OS::gettimeofday().msec())); + ACE_Time_Value dead_tv; + ORBSVCS_Time::TimeT_to_Time_Value (dead_tv, events[0].header.deadline); + ACE_DEBUG((LM_DEBUG,"Dynamic_Consumer in thread %t STOP_SERVICE (DEADLINE_MISSED) at %isec %iusec with deadline %isec %iusec\n",now_tv.sec(),now_tv.usec(),dead_tv.sec(),dead_tv.usec())); DSTRM_EVENT (TEST_ONE_FAM, DEADLINE_MISSED, 0, sizeof(Object_ID), (char*)&oid); } - //@BT INSTRUMENT with event ID: EVENT_WORK_END Measure time when - //work triggered by event finishes. - //DSTRM_EVENT (TEST_ONE_FAM, STOP_SERVICE, guid,0,NULL); - ACE_DEBUG((LM_DEBUG,"Dynamic_Consumer in thread %t STOP_SERVICE at %u\n",ACE_OS::gettimeofday().msec())); - DSTRM_EVENT (TEST_ONE_FAM, STOP_SERVICE, 0, sizeof(Object_ID), (char*)&oid); - - ACE_TIMEPROBE("STOP_SERVICE"); - - //now print timeprobe values - ACE_TIMEPROBE_PRINT; - ACE_TIMEPROBE_RESET; - - ACE_DEBUG ((LM_DEBUG, "Dynamic_Consumer (%P|%t) request processing for %d done, " - "elapsed time = %isec %iusec, deadline_missed_=%d\n", + ACE_DEBUG ((LM_DEBUG, "Dynamic_Consumer (%P|%t) request processing for %i done, " + "elapsed time = %isec %iusec, deadline_missed_=%i\n", events[0].header.type,elapsed_time.sec(),elapsed_time.usec(), this->deadline_missed_)); - ACE_DEBUG((LM_DEBUG,"Dynamic_Consumer (%P|%t) processing took %d iterations\n",j)); + ACE_DEBUG((LM_DEBUG,"Dynamic_Consumer (%P|%t) processing took %i iterations\n",j)); ACE_DEBUG((LM_DEBUG,"Dynamic_Consumer (%P|%t) event had deadline %i\n", events[0].header.deadline)); - // ACE_DEBUG ((LM_DEBUG, - // "Request processing in thread %t done, " - // "prio = %d, load = %d, elapsed time = %umsec, deadline_missed = %d\n", - // prio, exec_duration, elapsed_time.msec (),Deadline_missed )); - - //now, trigger the next subtask if any - if (this->fwddest_ != 0) - { - //trigger next subtask; we assume we are the only ones who set the Supplier's mode! - ACE_DEBUG((LM_DEBUG,"Dynamic_Consumer (%P|%t) triggering next subtask\n")); - this->fwddest_->mode(mode); - this->fwddest_->timeout_occured(ACE_ENV_SINGLE_ARG_PARAMETER); - } - //get ready for next event - this->received_ft_type1_ = false; - this->received_ft_type2_ = false; + this->window_++; + ACE_DEBUG((LM_DEBUG,"Dynamic_Consumer (%P|%t) INCREMENT window to %i\n",this->window_)); } //else not ready to run + else if (Supplier::FAULT_TOLERANT == mode && + this->window_ > events[0].header.eid.id) + { + ACE_DEBUG((LM_DEBUG,"Dynamic_Consumer (%P|%t) Ignoring REDUNDANT event from iteration %i\n",events[0].header.eid.id)); + } + else if (Supplier::FAULT_TOLERANT == mode && + this->window_ < events[0].header.eid.id) + { + ACE_DEBUG((LM_DEBUG,"Dynamic_Consumer (%P|%t) Ignoring FUTURE event from iteration %i; window is %i\n",events[0].header.eid.id,this->window_)); + DSTRM_EVENT (TEST_ONE_FAM, FUTURE_EVENT, 0, sizeof(Object_ID), (char*)&oid); + } else { - ACE_DEBUG((LM_DEBUG,"Dynamic_Consumer (%P|%t) NOT READY to run\n")); + ACE_DEBUG((LM_DEBUG,"Dynamic_Consumer (%P|%t) UNEXPECTED STATE: mode=%i\twindow=%ievent id=%i\n",mode,this->window_,events[0].header.eid.id)); + } + + //@BT INSTRUMENT with event ID: EVENT_WORK_END Measure time when + //work triggered by event finishes. + //DSTRM_EVENT (TEST_ONE_FAM, STOP_SERVICE, guid,0,NULL); + ACE_DEBUG((LM_DEBUG,"Dynamic_Consumer in thread %t STOP_SERVICE at %u\n",ACE_OS::gettimeofday().msec())); + DSTRM_EVENT (TEST_ONE_FAM, STOP_SERVICE, 0, sizeof(Object_ID), (char*)&oid); + + ACE_TIMEPROBE("STOP_SERVICE"); + + //now print timeprobe values + ACE_TIMEPROBE_PRINT; + ACE_TIMEPROBE_RESET; + + // ACE_DEBUG ((LM_DEBUG, + // "Request processing in thread %t done, " + // "prio = %i, load = %i, elapsed time = %umsec, deadline_missed = %i\n", + // prio, exec_duration, elapsed_time.msec (),Deadline_missed )); + + //now, trigger the next subtask if any + if (this->fwddest_ != 0) + { + //trigger next subtask; we assume we are the only ones who set the Supplier's mode! + ACE_DEBUG((LM_DEBUG,"Dynamic_Consumer (%P|%t) triggering next subtask\n")); + this->fwddest_->mode(mode); + this->fwddest_->timeout_occured(oid ACE_ENV_ARG_PARAMETER); } if (this->handler_ != 0) diff --git a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Dynamic_Consumer.h b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Dynamic_Consumer.h index 4e0147e9173..2377850334d 100644 --- a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Dynamic_Consumer.h +++ b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Dynamic_Consumer.h @@ -52,25 +52,10 @@ public: ACE_THROW_SPEC ((CORBA::SystemException)); private: - /* - int deadline_missed_; - ACE_Time_Value worktime_; - - Supplier *fwddest_; - //RtecScheduler::handle_t rt_info_; - InfoHandle rt_info_; - - Service_Handler * handler_; - - EventType norm_type_; - EventType ft_type_; - */ - EventType norm_type2_; EventType ft_type2_; - bool received_ft_type1_; - bool received_ft_type2_; + long window_; //ordinal of instance of execution }; #endif /* DYNAMIC_CONSUMER_H */ diff --git a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Dynamic_Supplier.cpp b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Dynamic_Supplier.cpp index ce5f9a9dfd5..3ed1be37b6b 100644 --- a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Dynamic_Supplier.cpp +++ b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Dynamic_Supplier.cpp @@ -30,7 +30,7 @@ Dynamic_Supplier::~Dynamic_Supplier(void) ///Overrides Supplier::timeout_occurred() void -Dynamic_Supplier::timeout_occured (ACE_ENV_SINGLE_ARG_DECL) +Dynamic_Supplier::timeout_occured (Object_ID& oid ACE_ENV_ARG_DECL) { if (this->handler_ != 0) { @@ -70,7 +70,6 @@ Dynamic_Supplier::timeout_occured (ACE_ENV_SINGLE_ARG_DECL) } } - Object_ID oid = ACE_OBJECT_COUNTER->increment(); eventA[0].header.eid.id = oid.id; eventA[0].header.eid.tid = oid.tid; eventA[0].header.eid.pid = oid.pid; diff --git a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Dynamic_Supplier.h b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Dynamic_Supplier.h index 3a33786d383..0dc3eca3af3 100644 --- a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Dynamic_Supplier.h +++ b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Dynamic_Supplier.h @@ -39,7 +39,7 @@ public: virtual ~Dynamic_Supplier(void); ///Overrides Supplier::timeout_occurred() - virtual void timeout_occured (ACE_ENV_SINGLE_ARG_DECL); + virtual void timeout_occured (Object_ID& oid ACE_ENV_ARG_DECL); protected: RtecEventComm::EventSourceID norm_type2_; diff --git a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Supplier.cpp b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Supplier.cpp index fe688bc7ed6..461f11a242b 100644 --- a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Supplier.cpp +++ b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Supplier.cpp @@ -52,7 +52,7 @@ Supplier::rt_info(void) } void -Supplier::timeout_occured (ACE_ENV_SINGLE_ARG_DECL) +Supplier::timeout_occured (Object_ID& oid ACE_ENV_ARG_DECL) { if (this->handler_ != 0) { @@ -80,7 +80,6 @@ Supplier::timeout_occured (ACE_ENV_SINGLE_ARG_DECL) ACE_DEBUG((LM_DEBUG,"Supplier (id %d) in thread %t will push event type %d\n",this->id_,event[0].header.type)); - Object_ID oid = ACE_OBJECT_COUNTER->increment(); event[0].header.eid.id = oid.id; event[0].header.eid.tid = oid.tid; event[0].header.eid.pid = oid.pid; @@ -166,16 +165,11 @@ Timeout_Consumer::push (const RtecEventComm::EventSet& events ACE_DEBUG((LM_DEBUG,"Timeout_Consumer (for Supplier id %d) in thread %t BEGIN_SCHED_SEGMENT (timeout occurred) at %u\n", this->supplier_impl_->get_id(),ACE_OS::gettimeofday().msec())); - Object_ID oid; - oid.id = events[0].header.eid.id; - oid.tid = events[0].header.eid.tid; - oid.pid = events[0].header.eid.pid; - oid.queue_id = events[0].header.eid.queue_id; - oid.type = events[0].header.type; + Object_ID oid = ACE_OBJECT_COUNTER->increment(); DSTRM_EVENT (WORKER_GROUP_FAM, BEGIN_SCHED_SEGMENT, 0, sizeof(Object_ID), (char*)&oid); - supplier_impl_->timeout_occured (ACE_ENV_SINGLE_ARG_PARAMETER); + supplier_impl_->timeout_occured (oid ACE_ENV_ARG_PARAMETER); //@BT: Finished handling the timeout. //DSTRM_EVENT (WORKER_GROUP_FAM, END_SCHED_SEGMENT, 1, 0, NULL); @@ -218,7 +212,7 @@ Supplier_Timeout_Handler::handle_timeout (const ACE_Time_Value &, DSTRM_EVENT (WORKER_GROUP_FAM, BEGIN_SCHED_SEGMENT, 0, sizeof(Object_ID), (char*)&oid); - supplier_impl_->timeout_occured (ACE_ENV_SINGLE_ARG_PARAMETER); + supplier_impl_->timeout_occured (oid ACE_ENV_SINGLE_ARG_PARAMETER); //@BT: Finished handling the timeout. //DSTRM_EVENT (WORKER_GROUP_FAM, END_SCHED_SEGMENT, 1, 0, NULL); diff --git a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Supplier.h b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Supplier.h index e848fee12cd..b909f229bab 100644 --- a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Supplier.h +++ b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Supplier.h @@ -69,7 +69,7 @@ public: ACE_THROW_SPEC ((CORBA::SystemException)); // The skeleton methods. - virtual void timeout_occured (ACE_ENV_SINGLE_ARG_DECL); + virtual void timeout_occured (Object_ID& oid ACE_ENV_ARG_DECL); void set_consumer_proxy(ConsumerProxy consumer_proxies); diff --git a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Supplier_EC.cpp b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Supplier_EC.cpp index b39bd782a22..d85f5e97578 100644 --- a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Supplier_EC.cpp +++ b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Supplier_EC.cpp @@ -32,7 +32,7 @@ namespace { - int config_run = 0; + int mode_switch = -1; //default to random switching ACE_CString sched_type = "rms"; ACE_CString ior_output_filename; FILE * ior_output_file; @@ -243,7 +243,7 @@ public: Mode_Handler *mode_handler; ACE_NEW(mode_handler, - Mode_Handler(-1)); //mode switch immediately + Mode_Handler(mode_switch)); //mode switch immediately Supplier *supplier_impl1_1; Timeout_Consumer *timeout_consumer_impl1_1; ACE_NEW(supplier_impl1_1, @@ -493,9 +493,9 @@ main (int argc, char* argv[]) int parse_args (int argc, char *argv[]) { - ACE_Get_Opt get_opts (argc, argv, "s:o:i:"); + ACE_Get_Opt get_opts (argc, argv, "s:o:i:m:"); int c; - //these used for handline '-i': + //these used for handling '-i': const char* input_file; size_t len; char *filename; @@ -524,6 +524,10 @@ int parse_args (int argc, char *argv[]) case 's': sched_type = ACE_TEXT_ALWAYS_CHAR(get_opts.opt_arg ()); break; + case 'm': + mode_switch = ACE_OS::atoi(get_opts.opt_arg()); + ACE_DEBUG((LM_DEBUG,"Setting mode switch to %i\n",mode_switch)); + break; case '?': default: @@ -531,8 +535,11 @@ int parse_args (int argc, char *argv[]) "Usage: %s -s " " [-o iorfile]" " [-i consumer_ec_ior]" + " [-m mode]" "\n" - "For multiple consumers, specify -i multiple times\n", + "For multiple consumers, specify -i multiple times\n" + "Mode is number of iterations before going to FT mode;" + "-1 randomly switches modes\n", argv [0]), -1); } diff --git a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/federated_dsui_families.h b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/federated_dsui_families.h index 2b552dbc296..0f556d8b3aa 100644 --- a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/federated_dsui_families.h +++ b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/federated_dsui_families.h @@ -1,21 +1,23 @@ // $Id$ -// Automatically generated header file "federated_dsui_families.h" by dsui-parse.py + +// Automatically generated header file "federated_dsui_families.h" by dsui-parse.py #ifndef _federated_DSUI_FAMILIES_H #define _federated_DSUI_FAMILIES_H -#define federated_NUM_FAMILIES 3 +#define NUM_FAMILIES 3 /* DSUI Family: TEST_ONE * "Description" */ #define TEST_ONE_FAM 1 -#define NUM_EVENTS_TEST_ONE 3 +#define NUM_EVENTS_TEST_ONE 4 #define NUM_COUNTERS_TEST_ONE 0 #define NUM_HISTOGRAMS_TEST_ONE 0 #define START_SERVICE 0 #define DEADLINE_MISSED 1 #define STOP_SERVICE 2 +#define FUTURE_EVENT 3 diff --git a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/federated_dsui_table.h b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/federated_dsui_table.h index 6a9453bb8ef..7c3cb5a11af 100644 --- a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/federated_dsui_table.h +++ b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/federated_dsui_table.h @@ -1,5 +1,6 @@ // $Id$ -// Automatically generated header file "federated_dsui_table.h" by dsui-parse.py + +// Automatically generated header file "federated_dsui_table.h" by dsui-parse.py #ifndef _federated_DSUI_TABLE_H #define _federated_DSUI_TABLE_H @@ -20,9 +21,10 @@ + extern int dsui_family_table; extern int federated_table_offset; -extern family_t *federated_family_table[federated_NUM_FAMILIES]; +extern family_t *federated_family_table[NUM_FAMILIES]; #define DSUI_INIT(identifier, enabled) dsui_init((identifier), (enabled)) #endif diff --git a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/federated_kokyu.dsui b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/federated_kokyu.dsui index 47889191050..fbf6dec624f 100644 --- a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/federated_kokyu.dsui +++ b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/federated_kokyu.dsui @@ -11,6 +11,7 @@ DSTRM_FAMILY WORKER_GROUP 3 "Description" DSTRM_EVENT TEST_ONE 1 START_SERVICE 0 "START_SERVICE" object_id_handler DSTRM_EVENT TEST_ONE 1 DEADLINE_MISSED 1 "DEADLINE_MISSED" object_id_handler DSTRM_EVENT TEST_ONE 1 STOP_SERVICE 2 "STOP_SERVICE" object_id_handler +DSTRM_EVENT TEST_ONE 1 FUTURE_EVENT 3 "FUTURE_EVENT" object_id_handler DSTRM_EVENT MAIN_GROUP 2 START 0 "START" object_id_handler DSTRM_EVENT MAIN_GROUP 2 SCHEDULE_SETUP 1 "SCHEDULE_SETUP" object_id_handler diff --git a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/federated_kokyu.xml b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/federated_kokyu.xml index 958d3586ec6..5dfdd0c05e7 100644 --- a/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/federated_kokyu.xml +++ b/TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/federated_kokyu.xml @@ -5,6 +5,7 @@ + -- cgit v1.2.1