| 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 <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <map> | 10 #include <map> |
| 11 #include <set> | 11 #include <set> |
| 12 | 12 |
| 13 #include "base/macros.h" | 13 #include "base/macros.h" |
| 14 #include "base/memory/scoped_ptr.h" | 14 #include "base/memory/scoped_ptr.h" |
| 15 #include "base/message_loop/message_pump.h" | 15 #include "base/message_loop/message_pump.h" |
| 16 #include "base/observer_list.h" | 16 #include "base/observer_list.h" |
| 17 #include "base/synchronization/lock.h" | 17 #include "base/synchronization/lock.h" |
| 18 #include "base/synchronization/waitable_event.h" |
| 18 #include "base/time/time.h" | 19 #include "base/time/time.h" |
| 19 #include "mojo/message_pump/mojo_message_pump_export.h" | 20 #include "mojo/message_pump/mojo_message_pump_export.h" |
| 20 #include "mojo/public/cpp/system/core.h" | 21 #include "mojo/public/cpp/system/core.h" |
| 21 | 22 |
| 22 namespace mojo { | 23 namespace mojo { |
| 23 namespace common { | 24 namespace common { |
| 24 | 25 |
| 25 class MessagePumpMojoHandler; | 26 class MessagePumpMojoHandler; |
| 26 | 27 |
| 27 // Mojo implementation of MessagePump. | 28 // Mojo implementation of MessagePump. |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 86 typedef std::map<Handle, Handler> HandleToHandler; | 87 typedef std::map<Handle, Handler> HandleToHandler; |
| 87 | 88 |
| 88 // Implementation of Run(). | 89 // Implementation of Run(). |
| 89 void DoRunLoop(RunState* run_state, Delegate* delegate); | 90 void DoRunLoop(RunState* run_state, Delegate* delegate); |
| 90 | 91 |
| 91 // Services the set of handles ready. If |block| is true this waits for a | 92 // Services the set of handles ready. If |block| is true this waits for a |
| 92 // handle to become ready, otherwise this does not block. Returns |true| if a | 93 // handle to become ready, otherwise this does not block. Returns |true| if a |
| 93 // handle has become ready, |false| otherwise. | 94 // handle has become ready, |false| otherwise. |
| 94 bool DoInternalWork(const RunState& run_state, bool block); | 95 bool DoInternalWork(const RunState& run_state, bool block); |
| 95 | 96 |
| 97 bool DoNonMojoWork(const RunState& run_state, bool block); |
| 98 |
| 96 // Waits for handles in the wait set to become ready. Returns |true| if ready | 99 // Waits for handles in the wait set to become ready. Returns |true| if ready |
| 97 // handles may be available, or |false| if the wait's deadline was exceeded. | 100 // handles may be available, or |false| if the wait's deadline was exceeded. |
| 98 // Note, ready handles may be unavailable, even though |true| was returned. | 101 // Note, ready handles may be unavailable, even though |true| was returned. |
| 99 bool WaitForReadyHandles(const RunState& run_state) const; | 102 bool WaitForReadyHandles(const RunState& run_state) const; |
| 100 | 103 |
| 101 // Retrieves any 'ready' handles from the wait set, and runs the handler's | 104 // Retrieves any 'ready' handles from the wait set, and runs the handler's |
| 102 // OnHandleReady() or OnHandleError() functions as necessary. Returns |true| | 105 // OnHandleReady() or OnHandleError() functions as necessary. Returns |true| |
| 103 // if any handles were ready and processed. | 106 // if any handles were ready and processed. |
| 104 bool ProcessReadyHandles(); | 107 bool ProcessReadyHandles(); |
| 105 | 108 |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 147 int next_handler_id_; | 150 int next_handler_id_; |
| 148 | 151 |
| 149 base::ObserverList<Observer> observers_; | 152 base::ObserverList<Observer> observers_; |
| 150 | 153 |
| 151 // Mojo handle for the wait set. | 154 // Mojo handle for the wait set. |
| 152 ScopedHandle wait_set_handle_; | 155 ScopedHandle wait_set_handle_; |
| 153 // Used to wake up run loop from |SignalControlPipe()|. | 156 // Used to wake up run loop from |SignalControlPipe()|. |
| 154 ScopedMessagePipeHandle read_handle_; | 157 ScopedMessagePipeHandle read_handle_; |
| 155 ScopedMessagePipeHandle write_handle_; | 158 ScopedMessagePipeHandle write_handle_; |
| 156 | 159 |
| 160 // Used to sleep until there is more work to do, when the Mojo EDK is shutting |
| 161 // down. |
| 162 base::WaitableEvent event_; |
| 163 |
| 157 DISALLOW_COPY_AND_ASSIGN(MessagePumpMojo); | 164 DISALLOW_COPY_AND_ASSIGN(MessagePumpMojo); |
| 158 }; | 165 }; |
| 159 | 166 |
| 160 } // namespace common | 167 } // namespace common |
| 161 } // namespace mojo | 168 } // namespace mojo |
| 162 | 169 |
| 163 #endif // MOJO_MESSAGE_PUMP_MESSAGE_PUMP_MOJO_H_ | 170 #endif // MOJO_MESSAGE_PUMP_MESSAGE_PUMP_MOJO_H_ |
| OLD | NEW |