mirror of
https://github.com/TomHarte/CLK.git
synced 2025-11-02 02:16:18 +00:00
Split interface, make const.
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
//
|
||||
|
||||
#include "MultiMediaTarget.hpp"
|
||||
#include <unordered_set>
|
||||
|
||||
using namespace Analyser::Dynamic;
|
||||
|
||||
@@ -27,3 +28,29 @@ bool MultiMediaTarget::insert_media(const Analyser::Static::Media &media) {
|
||||
}
|
||||
return inserted;
|
||||
}
|
||||
|
||||
MultiMediaChangeObserver::MultiMediaChangeObserver(const std::vector<std::unique_ptr<::Machine::DynamicMachine>> &machines) {
|
||||
for(const auto &machine: machines) {
|
||||
auto media_change_observer = machine->media_change_observer();
|
||||
if(media_change_observer) targets_.push_back(media_change_observer);
|
||||
}
|
||||
}
|
||||
|
||||
using ChangeEffect = MachineTypes::MediaChangeObserver::ChangeEffect;
|
||||
|
||||
ChangeEffect MultiMediaChangeObserver::effect_for_file_did_change(const std::string &name) const {
|
||||
if(targets_.empty()) {
|
||||
return ChangeEffect::None;
|
||||
}
|
||||
|
||||
std::unordered_set<ChangeEffect> effects;
|
||||
for(const auto &target: targets_) {
|
||||
effects.insert(target->effect_for_file_did_change(name));
|
||||
}
|
||||
|
||||
// No agreement => restart.
|
||||
if(effects.size() > 1) {
|
||||
return ChangeEffect::RestartMachine;
|
||||
}
|
||||
return *effects.begin();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user