Chromium Code Reviews| 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 |