Index: services/resource_coordinator/coordination_unit/coordination_unit_impl.h |
diff --git a/services/resource_coordinator/coordination_unit/coordination_unit_impl.h b/services/resource_coordinator/coordination_unit/coordination_unit_impl.h |
index 94ebb044e624c8a0b0f6217f2b7e71e05ed5a62d..af6e92fffb7c6d465f8299028b0f78b2c9665808 100644 |
--- a/services/resource_coordinator/coordination_unit/coordination_unit_impl.h |
+++ b/services/resource_coordinator/coordination_unit/coordination_unit_impl.h |
@@ -6,23 +6,30 @@ |
#define SERVICES_RESOURCE_COORDINATOR_COORDINATION_UNIT_COORDINATION_UNIT_IMPL_H_ |
#include <list> |
+#include <map> |
#include <memory> |
#include <set> |
#include <unordered_map> |
#include <utility> |
+#include <vector> |
+#include "base/callback.h" |
+#include "base/observer_list.h" |
#include "base/optional.h" |
#include "base/values.h" |
#include "mojo/public/cpp/bindings/binding_set.h" |
#include "mojo/public/cpp/bindings/interface_request.h" |
#include "mojo/public/cpp/bindings/strong_binding.h" |
#include "services/resource_coordinator/public/cpp/coordination_unit_id.h" |
+#include "services/resource_coordinator/public/cpp/coordination_unit_types.h" |
#include "services/resource_coordinator/public/interfaces/coordination_unit.mojom.h" |
#include "services/resource_coordinator/public/interfaces/coordination_unit_provider.mojom.h" |
#include "services/service_manager/public/cpp/service_context_ref.h" |
namespace resource_coordinator { |
+class CoordinationUnitGraphObserver; |
+ |
class CoordinationUnitImpl : public mojom::CoordinationUnit { |
public: |
CoordinationUnitImpl( |
@@ -55,10 +62,14 @@ class CoordinationUnitImpl : public mojom::CoordinationUnit { |
// Clear property from internal key-value store |
void ClearProperty(mojom::PropertyType property); |
// Retrieve property from internal key-value store |
- base::Value GetProperty(mojom::PropertyType property); |
+ base::Value GetProperty(mojom::PropertyType property) const; |
// Set property from internal key-value store |
void SetProperty(mojom::PropertyType property, base::Value value); |
+ void WillBeDestroyed(); |
+ void AddObserver(CoordinationUnitGraphObserver* observer); |
+ void RemoveObserver(CoordinationUnitGraphObserver* observer); |
+ |
protected: |
const CoordinationUnitID id_; |
std::set<CoordinationUnitImpl*> children_; |
@@ -92,6 +103,8 @@ class CoordinationUnitImpl : public mojom::CoordinationUnit { |
mojom::CoordinationPolicyCallbackPtr policy_callback_; |
mojom::CoordinationPolicyPtr current_policy_; |
+ base::ObserverList<CoordinationUnitGraphObserver> observers_; |
+ |
base::Optional<bool> state_flags_[kNumStateFlags]; |
DISALLOW_COPY_AND_ASSIGN(CoordinationUnitImpl); |