Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(55)

Unified Diff: services/resource_coordinator/coordination_unit/coordination_unit_impl.h

Issue 2942403002: [GRC] Coordination Unit Graph Observer (Closed)
Patch Set: Rebase Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);

Powered by Google App Engine
This is Rietveld 408576698