| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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_MESSAGE_PUMP_MESSAGE_PUMP_MOJO_H_ | 5 #ifndef MOJO_MESSAGE_PUMP_MESSAGE_PUMP_MOJO_H_ |
| 6 #define MOJO_MESSAGE_PUMP_MESSAGE_PUMP_MOJO_H_ | 6 #define MOJO_MESSAGE_PUMP_MESSAGE_PUMP_MOJO_H_ |
| 7 | 7 |
| 8 #include <map> | 8 #include <map> |
| 9 #include <set> |
| 9 | 10 |
| 10 #include "base/macros.h" | 11 #include "base/macros.h" |
| 11 #include "base/memory/scoped_ptr.h" | 12 #include "base/memory/scoped_ptr.h" |
| 12 #include "base/message_loop/message_pump.h" | 13 #include "base/message_loop/message_pump.h" |
| 13 #include "base/observer_list.h" | 14 #include "base/observer_list.h" |
| 14 #include "base/synchronization/lock.h" | 15 #include "base/synchronization/lock.h" |
| 15 #include "base/time/time.h" | 16 #include "base/time/time.h" |
| 16 #include "mojo/message_pump/mojo_message_pump_export.h" | 17 #include "mojo/message_pump/mojo_message_pump_export.h" |
| 17 #include "mojo/public/cpp/system/core.h" | 18 #include "mojo/public/cpp/system/core.h" |
| 18 | 19 |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 110 // If non-NULL we're running (inside Run()). Member is reference to value on | 111 // If non-NULL we're running (inside Run()). Member is reference to value on |
| 111 // stack. | 112 // stack. |
| 112 RunState* run_state_; | 113 RunState* run_state_; |
| 113 | 114 |
| 114 // Lock for accessing |run_state_|. In general the only method that we have to | 115 // Lock for accessing |run_state_|. In general the only method that we have to |
| 115 // worry about is ScheduleWork(). All other methods are invoked on the same | 116 // worry about is ScheduleWork(). All other methods are invoked on the same |
| 116 // thread. | 117 // thread. |
| 117 base::Lock run_state_lock_; | 118 base::Lock run_state_lock_; |
| 118 | 119 |
| 119 HandleToHandler handlers_; | 120 HandleToHandler handlers_; |
| 121 // Set of handles that have a deadline set. Avoids iterating over all elements |
| 122 // in |handles_| in the common case (no deadline set). |
| 123 // TODO(amistry): Make this better and avoid special-casing deadlines. |
| 124 std::set<Handle> deadline_handles_; |
| 120 | 125 |
| 121 // An ever increasing value assigned to each Handler::id. Used to detect | 126 // An ever increasing value assigned to each Handler::id. Used to detect |
| 122 // uniqueness while notifying. That is, while notifying expired timers we copy | 127 // uniqueness while notifying. That is, while notifying expired timers we copy |
| 123 // |handlers_| and only notify handlers whose id match. If the id does not | 128 // |handlers_| and only notify handlers whose id match. If the id does not |
| 124 // match it means the handler was removed then added so that we shouldn't | 129 // match it means the handler was removed then added so that we shouldn't |
| 125 // notify it. | 130 // notify it. |
| 126 int next_handler_id_; | 131 int next_handler_id_; |
| 127 | 132 |
| 128 base::ObserverList<Observer> observers_; | 133 base::ObserverList<Observer> observers_; |
| 129 | 134 |
| 130 DISALLOW_COPY_AND_ASSIGN(MessagePumpMojo); | 135 DISALLOW_COPY_AND_ASSIGN(MessagePumpMojo); |
| 131 }; | 136 }; |
| 132 | 137 |
| 133 } // namespace common | 138 } // namespace common |
| 134 } // namespace mojo | 139 } // namespace mojo |
| 135 | 140 |
| 136 #endif // MOJO_MESSAGE_PUMP_MESSAGE_PUMP_MOJO_H_ | 141 #endif // MOJO_MESSAGE_PUMP_MESSAGE_PUMP_MOJO_H_ |
| OLD | NEW |