Index: athena/resource_manager/delegate/resource_manager_delegate.cc |
diff --git a/athena/resource_manager/delegate/resource_manager_delegate.cc b/athena/resource_manager/delegate/resource_manager_delegate.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..2ef50124741bebc3ed79e1ea2ec7fcc20528ba1e |
--- /dev/null |
+++ b/athena/resource_manager/delegate/resource_manager_delegate.cc |
@@ -0,0 +1,49 @@ |
+// Copyright 2014 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. |
+ |
+#include "athena/resource_manager/public/resource_manager_delegate.h" |
+ |
+#include <string> |
+ |
+#include "base/logging.h" |
+#include "base/macros.h" |
+#include "base/process/process_metrics.h" |
+ |
+namespace athena { |
+ |
+namespace { |
+// This is the minimum amount of time in milliseconds between checks for |
+// memory pressure. |
+const int kMemoryPressureIntervalMs = 750; |
+} // namespace |
+ |
+class ResourceManagerDelegateImpl : public ResourceManagerDelegate { |
+ public: |
+ ResourceManagerDelegateImpl() {} |
+ virtual ~ResourceManagerDelegateImpl() {} |
+ |
+ private: |
+ virtual int GetUsedMemoryInPercent() OVERRIDE { |
+ base::SystemMemoryInfoKB memory; |
+ if (base::GetSystemMemoryInfo(&memory) && |
+ memory.total > 0 && memory.free >= 0) { |
+ return ((memory.total - memory.free) * 100) / memory.total; |
Luigi Semenzato
2014/08/27 21:24:08
Is memory.free the same as the MemFree field of /p
Mr4D (OOO till 08-26)
2014/08/27 22:34:01
Okay, I will change that in a separate patch. Let'
|
+ } |
+ LOG(WARNING) << "Cannot determine the free memory of the system."; |
+ return 0; |
+ } |
+ |
+ virtual int MemoryPressureIntervalInMS() OVERRIDE { |
+ return kMemoryPressureIntervalMs; |
+ } |
+ DISALLOW_COPY_AND_ASSIGN(ResourceManagerDelegateImpl); |
+}; |
+ |
+// static |
+ResourceManagerDelegate* |
+ResourceManagerDelegate::CreateResourceManagerDelegate() { |
+ return new ResourceManagerDelegateImpl; |
+} |
+ |
+} // namespace athena |