summaryrefslogtreecommitdiff
path: root/src/fake_monitor.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/fake_monitor.cc')
-rw-r--r--src/fake_monitor.cc31
1 files changed, 22 insertions, 9 deletions
diff --git a/src/fake_monitor.cc b/src/fake_monitor.cc
index ebdc79b..b05e521 100644
--- a/src/fake_monitor.cc
+++ b/src/fake_monitor.cc
@@ -1,10 +1,10 @@
#include "common.hh"
-#include <vector>
#include <unordered_map>
#include "fake_monitor.hh"
#include "looper.hh"
+#include "observers.hh"
namespace {
@@ -35,8 +35,10 @@ public:
timer_ = 0;
}
machines_.clear();
- for (auto* observer : observers_) {
+ auto observer = observers_.first();
+ while (observer) {
observer->state(this, SEARCHING);
+ observer = observers_.next();
}
}
@@ -74,8 +76,11 @@ public:
}
void add_observer(Observer* observer) override {
- assert(observer);
- observers_.push_back(observer);
+ observers_.add(observer);
+ }
+
+ void remove_observer(Observer* observer) override {
+ observers_.remove(observer);
}
private:
@@ -95,8 +100,10 @@ private:
void fake_connect(Looper*, uint32_t) {
timer_ = 0;
- for (auto* observer : observers_) {
+ auto observer = observers_.first();
+ while (observer) {
observer->state(this, CONNECTED);
+ observer = observers_.next();
}
add_machine("alice", 4);
@@ -114,8 +121,10 @@ private:
entry.active = 0;
max_jobs_ += max_jobs;
- for (auto* observer : observers_) {
+ auto observer = observers_.first();
+ while (observer) {
observer->added_machine(this, id);
+ observer = observers_.next();
}
}
@@ -137,8 +146,10 @@ private:
auto job = it->second;
jobs_.erase(it);
machines_[job.worker].active--;
- for (auto* observer : observers_) {
+ auto observer = observers_.first();
+ while (observer) {
observer->removed_job(this, job.host, job.worker);
+ observer = observers_.next();
}
}
@@ -168,8 +179,10 @@ private:
void add_job(uint32_t job_id, uint32_t host, uint32_t worker) {
jobs_.insert(std::make_pair(job_id, Job(host, worker)));
- for (auto* observer : observers_) {
+ auto observer = observers_.first();
+ while (observer) {
observer->added_job(this, host, worker);
+ observer = observers_.next();
}
}
@@ -179,7 +192,7 @@ private:
uint32_t job_id_;
size_t max_jobs_;
std::unordered_map<uint32_t, Entry> machines_;
- std::vector<Observer*> observers_;
+ Observers<Observer> observers_;
std::unordered_map<uint32_t, Job> jobs_;
};