diff options
Diffstat (limited to 'TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/src/Scheduler.cpp')
-rw-r--r-- | TAO/orbsvcs/examples/FaultTolerance/FLARe/DeCoRAM/src/Scheduler.cpp | 33 |
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, |