| OLD | NEW |
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef MOJO_PUBLIC_CPP_SYSTEM_SIMPLE_WATCHER_H_ | 5 #ifndef MOJO_PUBLIC_CPP_SYSTEM_SIMPLE_WATCHER_H_ |
| 6 #define MOJO_PUBLIC_CPP_SYSTEM_SIMPLE_WATCHER_H_ | 6 #define MOJO_PUBLIC_CPP_SYSTEM_SIMPLE_WATCHER_H_ |
| 7 | 7 |
| 8 #include "base/callback.h" | 8 #include "base/callback.h" |
| 9 #include "base/location.h" | 9 #include "base/location.h" |
| 10 #include "base/macros.h" | 10 #include "base/macros.h" |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 157 | 157 |
| 158 // Sets the tag used by the heap profiler. | 158 // Sets the tag used by the heap profiler. |
| 159 // |tag| must be a const string literal. | 159 // |tag| must be a const string literal. |
| 160 void set_heap_profiler_tag(const char* heap_profiler_tag) { | 160 void set_heap_profiler_tag(const char* heap_profiler_tag) { |
| 161 heap_profiler_tag_ = heap_profiler_tag; | 161 heap_profiler_tag_ = heap_profiler_tag; |
| 162 } | 162 } |
| 163 | 163 |
| 164 private: | 164 private: |
| 165 class Context; | 165 class Context; |
| 166 | 166 |
| 167 void OnHandleReady(scoped_refptr<const Context> context, MojoResult result); | 167 void OnHandleReady(int watch_id, MojoResult result); |
| 168 | 168 |
| 169 base::ThreadChecker thread_checker_; | 169 base::ThreadChecker thread_checker_; |
| 170 | 170 |
| 171 // The policy used to determine how this SimpleWatcher is armed. | 171 // The policy used to determine how this SimpleWatcher is armed. |
| 172 const ArmingPolicy arming_policy_; | 172 const ArmingPolicy arming_policy_; |
| 173 | 173 |
| 174 // The TaskRunner of this SimpleWatcher's owning thread. This field is safe to | 174 // The TaskRunner of this SimpleWatcher's owning thread. This field is safe to |
| 175 // access from any thread. | 175 // access from any thread. |
| 176 const scoped_refptr<base::SingleThreadTaskRunner> task_runner_; | 176 const scoped_refptr<base::SingleThreadTaskRunner> task_runner_; |
| 177 | 177 |
| 178 // Whether |task_runner_| is the same as base::ThreadTaskRunnerHandle::Get() | 178 // Whether |task_runner_| is the same as base::ThreadTaskRunnerHandle::Get() |
| 179 // for the thread. | 179 // for the thread. |
| 180 const bool is_default_task_runner_; | 180 const bool is_default_task_runner_; |
| 181 | 181 |
| 182 ScopedWatcherHandle watcher_handle_; | 182 ScopedWatcherHandle watcher_handle_; |
| 183 | 183 |
| 184 // A thread-safe context object corresponding to the currently active watch, | 184 // A thread-safe context object corresponding to the currently active watch, |
| 185 // if any. | 185 // if any. |
| 186 scoped_refptr<Context> context_; | 186 scoped_refptr<Context> context_; |
| 187 | 187 |
| 188 // Fields below must only be accessed on the SimpleWatcher's owning thread. | 188 // Fields below must only be accessed on the SimpleWatcher's owning thread. |
| 189 | 189 |
| 190 // The handle currently under watch. Not owned. | 190 // The handle currently under watch. Not owned. |
| 191 Handle handle_; | 191 Handle handle_; |
| 192 | 192 |
| 193 // A simple counter to disambiguate notifications from multiple watch contexts |
| 194 // in the event that this SimpleWatcher cancels and watches multiple times. |
| 195 int watch_id_ = 0; |
| 196 |
| 193 // The callback to call when the handle is signaled. | 197 // The callback to call when the handle is signaled. |
| 194 ReadyCallback callback_; | 198 ReadyCallback callback_; |
| 195 | 199 |
| 196 // Tracks if the SimpleWatcher has already notified of unsatisfiability. This | 200 // Tracks if the SimpleWatcher has already notified of unsatisfiability. This |
| 197 // is used to prevent redundant notifications in AUTOMATIC mode. | 201 // is used to prevent redundant notifications in AUTOMATIC mode. |
| 198 bool unsatisfiable_ = false; | 202 bool unsatisfiable_ = false; |
| 199 | 203 |
| 200 // Tag used to ID memory allocations that originated from notifications in | 204 // Tag used to ID memory allocations that originated from notifications in |
| 201 // this watcher. | 205 // this watcher. |
| 202 const char* heap_profiler_tag_ = nullptr; | 206 const char* heap_profiler_tag_ = nullptr; |
| 203 | 207 |
| 204 base::WeakPtrFactory<SimpleWatcher> weak_factory_; | 208 base::WeakPtrFactory<SimpleWatcher> weak_factory_; |
| 205 | 209 |
| 206 DISALLOW_COPY_AND_ASSIGN(SimpleWatcher); | 210 DISALLOW_COPY_AND_ASSIGN(SimpleWatcher); |
| 207 }; | 211 }; |
| 208 | 212 |
| 209 } // namespace mojo | 213 } // namespace mojo |
| 210 | 214 |
| 211 #endif // MOJO_PUBLIC_CPP_SYSTEM_SIMPLE_WATCHER_H_ | 215 #endif // MOJO_PUBLIC_CPP_SYSTEM_SIMPLE_WATCHER_H_ |
| OLD | NEW |