Index: services/resource_coordinator/coordination_unit/coordination_unit_manager.cc |
diff --git a/services/resource_coordinator/coordination_unit/coordination_unit_manager.cc b/services/resource_coordinator/coordination_unit/coordination_unit_manager.cc |
index 4eca58767eeb3174725d51177d10ad7b67428785..2a31c2551deb93332a0ca0f7bdad1ca4fc431531 100644 |
--- a/services/resource_coordinator/coordination_unit/coordination_unit_manager.cc |
+++ b/services/resource_coordinator/coordination_unit/coordination_unit_manager.cc |
@@ -4,16 +4,21 @@ |
#include "services/resource_coordinator/coordination_unit/coordination_unit_manager.h" |
+#include <memory> |
lpy
2017/06/19 23:21:39
no need.
matthalp
2017/06/20 19:02:52
Done.
|
+#include <utility> |
+ |
#include "base/bind.h" |
#include "base/bind_helpers.h" |
+#include "base/macros.h" |
+#include "services/resource_coordinator/coordination_unit/coordination_unit_graph_observer.h" |
+#include "services/resource_coordinator/coordination_unit/coordination_unit_impl.h" |
#include "services/resource_coordinator/coordination_unit/coordination_unit_provider_impl.h" |
+#include "services/resource_coordinator/public/cpp/coordination_unit_types.h" |
#include "services/service_manager/public/cpp/binder_registry.h" |
#include "services/service_manager/public/cpp/service_context.h" |
namespace resource_coordinator { |
-class CoordinationUnitImpl; |
- |
CoordinationUnitManager::CoordinationUnitManager() = default; |
CoordinationUnitManager::~CoordinationUnitManager() = default; |
@@ -22,7 +27,27 @@ void CoordinationUnitManager::OnStart( |
service_manager::BinderRegistry* registry, |
service_manager::ServiceContextRefFactory* service_ref_factory) { |
registry->AddInterface(base::Bind(&CoordinationUnitProviderImpl::Create, |
- base::Unretained(service_ref_factory))); |
+ base::Unretained(service_ref_factory), |
+ base::Unretained(this))); |
+} |
+ |
+void CoordinationUnitManager::RegisterObserver( |
+ std::unique_ptr<CoordinationUnitGraphObserver> observer) { |
+ observers_.push_back(std::move(observer)); |
+} |
+ |
+void CoordinationUnitManager::NotifyObserversCoordinationUnitCreated( |
+ CoordinationUnitImpl* coordination_unit) { |
+ for (auto& observer : observers_) { |
+ if (observer->ShouldObserve(coordination_unit)) { |
+ observer->OnCoordinationUnitCreatedEvent(coordination_unit); |
+ } |
+ } |
+} |
+ |
+void CoordinationUnitManager::NotifyObserversCoordinationUnitWillBeDestroyed( |
+ CoordinationUnitImpl* coordination_unit) { |
+ coordination_unit->WillBeDestroyed(); |
lpy
2017/06/19 23:21:39
Should we also notify observers here?
matthalp
2017/06/20 19:02:52
Done. I agree that removes a little bit of code co
|
} |
} // namespace resource_coordinator |