summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/src/Scheduler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/src/Scheduler.cpp')
-rw-r--r--TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/src/Scheduler.cpp33
1 files changed, 29 insertions, 4 deletions
diff --git a/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/src/Scheduler.cpp b/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/src/Scheduler.cpp
index 124d849f263..b94f03fa0e8 100644
--- a/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/src/Scheduler.cpp
+++ b/TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/src/Scheduler.cpp
@@ -97,17 +97,42 @@ ProcessorNameComparison::ProcessorNameComparison (const Processor & p)
{
}
+bool
+ProcessorNameComparison::operator () (bool equal,
+ const TASK_POSITIONS::value_type & pos)
+{
+ return (equal || (pos.first.compare (p_) == 0));
+}
+
Processor
ProcessorPicker::operator () (const TASK_POSITIONS::value_type & entry)
{
return entry.first;
}
-bool
-ProcessorNameComparison::operator () (bool equal,
- const TASK_POSITIONS::value_type & pos)
+ReplicaFinder::ReplicaFinder (const REPLICA_GROUPS & rep_groups)
+ : rep_groups_ (rep_groups)
{
- return (equal || (pos.first.compare (p_) == 0));
+}
+
+PROCESSOR_SET
+ReplicaFinder::operator () (const Task & task)
+{
+ PROCESSOR_SET result;
+
+ REPLICA_GROUPS::const_iterator replicas =
+ rep_groups_.find (primary_name (task));
+
+ if (replicas != rep_groups_.end ())
+ {
+ std::transform (replicas->second.begin (),
+ replicas->second.begin () + task.rank,
+ std::inserter (result,
+ result.begin ()),
+ processor_picker_);
+ }
+
+ return result;
}
std::ostream & operator<< (std::ostream & ostr,