summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorthrall <thrall@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2004-06-17 02:21:07 +0000
committerthrall <thrall@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2004-06-17 02:21:07 +0000
commitb62e23d35bb1cbc293f3eb145a3bf0aa1f5cb85b (patch)
treed8b3772c65a12cb0f430fcf14f2cc85c9f70173b
parentdcee4d5f7ca7c79a038f82c296a79f2998177230 (diff)
downloadATCD-b62e23d35bb1cbc293f3eb145a3bf0aa1f5cb85b.tar.gz
Incorporated mode checking into subtest execution time, fixed some other stuff
-rwxr-xr-xTAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Client2
-rw-r--r--TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Consumer.cpp40
-rw-r--r--TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Dynamic_Consumer.cpp164
-rw-r--r--TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Dynamic_Consumer.h17
-rw-r--r--TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Dynamic_Supplier.cpp3
-rw-r--r--TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Dynamic_Supplier.h2
-rw-r--r--TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Supplier.cpp14
-rw-r--r--TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Supplier.h2
-rw-r--r--TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/Supplier_EC.cpp17
-rw-r--r--TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/federated_dsui_families.h8
-rw-r--r--TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/federated_dsui_table.h6
-rw-r--r--TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/federated_kokyu.dsui1
-rw-r--r--TAO/orbsvcs/examples/RtEC/Federated_Kokyu/dynamic_topology_test/federated_kokyu.xml1
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 <rms|muf|edf>"
" [-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 @@
<EVENT name="START_SERVICE" id="0" />
<EVENT name="DEADLINE_MISSED" id="1" />
<EVENT name="STOP_SERVICE" id="2" />
+ <EVENT name="FUTURE_EVENT" id="3" />
</FAMILY>
<FAMILY name="MAIN_GROUP" id="2">
<EVENT name="START" id="0"/>