Index: services/resource_coordinator/public/cpp/coordination_unit_id.h |
diff --git a/services/resource_coordinator/public/cpp/coordination_unit_id.h b/services/resource_coordinator/public/cpp/coordination_unit_id.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..71e9612ea0e88853ccd728f16572f82bb7cab5a0 |
--- /dev/null |
+++ b/services/resource_coordinator/public/cpp/coordination_unit_id.h |
@@ -0,0 +1,44 @@ |
+// Copyright 2017 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+#ifndef SERVICES_RESOURCE_COORDINATOR_PUBLIC_CPP_ID_H_ |
+#define SERVICES_RESOURCE_COORDINATOR_PUBLIC_CPP_ID_H_ |
+ |
+#include <string> |
+ |
+#include "services/resource_coordinator/public/cpp/coordination_unit_types.h" |
+#include "services/resource_coordinator/public/cpp/resource_coordinator_export.h" |
+ |
+namespace resource_coordinator { |
+ |
+// This is a native struct rather than a mojom struct as we eventually want |
+// to annotate base::TaskRunner with CUs for cost attribution purses and |
+// would like to move it to base/ as easily as possible at that point. |
+struct SERVICES_RESOURCE_COORDINATOR_PUBLIC_CPP_EXPORT CoordinationUnitID { |
+ CoordinationUnitID(); |
+ CoordinationUnitID(const CoordinationUnitType& type, |
+ const std::string& new_id); |
+ |
+ bool operator==(const CoordinationUnitID& b) const { |
+ return id == b.id && type == b.type; |
+ } |
+ |
+ int64_t id; |
+ CoordinationUnitType type; |
+}; |
+ |
+} // resource_coordinator |
+ |
+namespace std { |
+ |
+template <> |
+struct hash<resource_coordinator::CoordinationUnitID> { |
+ uint64_t operator()( |
+ const resource_coordinator::CoordinationUnitID& id) const { |
+ return ((static_cast<uint64_t>(id.type)) << 32) | id.id; |
+ } |
+}; |
+ |
+} // namespace std |
+ |
+#endif // SERVICES_RESOURCE_COORDINATOR_PUBLIC_CPP_ID_H_ |