| 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 #include "mojo/message_pump/handle_watcher.h" | 5 #include "mojo/message_pump/handle_watcher.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 | 8 |
| 9 #include "base/atomic_sequence_num.h" | 9 #include "base/atomic_sequence_num.h" |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 182 RequestData() : type(REQUEST_START), stop_id(0), stop_event(NULL) {} | 182 RequestData() : type(REQUEST_START), stop_id(0), stop_event(NULL) {} |
| 183 | 183 |
| 184 RequestType type; | 184 RequestType type; |
| 185 WatchData start_data; | 185 WatchData start_data; |
| 186 WatcherID stop_id; | 186 WatcherID stop_id; |
| 187 base::WaitableEvent* stop_event; | 187 base::WaitableEvent* stop_event; |
| 188 }; | 188 }; |
| 189 | 189 |
| 190 typedef std::vector<RequestData> Requests; | 190 typedef std::vector<RequestData> Requests; |
| 191 | 191 |
| 192 friend struct DefaultSingletonTraits<WatcherThreadManager>; | 192 friend struct base::DefaultSingletonTraits<WatcherThreadManager>; |
| 193 | 193 |
| 194 WatcherThreadManager(); | 194 WatcherThreadManager(); |
| 195 | 195 |
| 196 // Schedules a request on the background thread. See |requests_| for details. | 196 // Schedules a request on the background thread. See |requests_| for details. |
| 197 void AddRequest(const RequestData& data); | 197 void AddRequest(const RequestData& data); |
| 198 | 198 |
| 199 // Processes requests added to |requests_|. This is invoked on the backend | 199 // Processes requests added to |requests_|. This is invoked on the backend |
| 200 // thread. | 200 // thread. |
| 201 void ProcessRequestsOnBackendThread(); | 201 void ProcessRequestsOnBackendThread(); |
| 202 | 202 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 214 Requests requests_; | 214 Requests requests_; |
| 215 | 215 |
| 216 DISALLOW_COPY_AND_ASSIGN(WatcherThreadManager); | 216 DISALLOW_COPY_AND_ASSIGN(WatcherThreadManager); |
| 217 }; | 217 }; |
| 218 | 218 |
| 219 WatcherThreadManager::~WatcherThreadManager() { | 219 WatcherThreadManager::~WatcherThreadManager() { |
| 220 thread_.Stop(); | 220 thread_.Stop(); |
| 221 } | 221 } |
| 222 | 222 |
| 223 WatcherThreadManager* WatcherThreadManager::GetInstance() { | 223 WatcherThreadManager* WatcherThreadManager::GetInstance() { |
| 224 return Singleton<WatcherThreadManager>::get(); | 224 return base::Singleton<WatcherThreadManager>::get(); |
| 225 } | 225 } |
| 226 | 226 |
| 227 WatcherID WatcherThreadManager::StartWatching( | 227 WatcherID WatcherThreadManager::StartWatching( |
| 228 const Handle& handle, | 228 const Handle& handle, |
| 229 MojoHandleSignals handle_signals, | 229 MojoHandleSignals handle_signals, |
| 230 base::TimeTicks deadline, | 230 base::TimeTicks deadline, |
| 231 const base::Callback<void(MojoResult)>& callback) { | 231 const base::Callback<void(MojoResult)>& callback) { |
| 232 RequestData request_data; | 232 RequestData request_data; |
| 233 request_data.type = REQUEST_START; | 233 request_data.type = REQUEST_START; |
| 234 request_data.start_data.id = watcher_id_generator_.GetNext(); | 234 request_data.start_data.id = watcher_id_generator_.GetNext(); |
| (...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 465 this, handle, handle_signals, deadline, callback)); | 465 this, handle, handle_signals, deadline, callback)); |
| 466 } | 466 } |
| 467 } | 467 } |
| 468 | 468 |
| 469 void HandleWatcher::Stop() { | 469 void HandleWatcher::Stop() { |
| 470 state_.reset(); | 470 state_.reset(); |
| 471 } | 471 } |
| 472 | 472 |
| 473 } // namespace common | 473 } // namespace common |
| 474 } // namespace mojo | 474 } // namespace mojo |
| OLD | NEW |