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/edk/system/core.h" | 5 #include "mojo/edk/system/core.h" |
6 | 6 |
7 #include <string.h> | 7 #include <string.h> |
8 | 8 |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 409 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
420 // Note: The |reinterpret_cast| is safe, since |HandleSignalsState| is a | 420 // Note: The |reinterpret_cast| is safe, since |HandleSignalsState| is a |
421 // subclass of |MojoHandleSignalsState| that doesn't add any data members. | 421 // subclass of |MojoHandleSignalsState| that doesn't add any data members. |
422 rv = WaitManyInternal(handles, signals, num_handles, deadline, &index, | 422 rv = WaitManyInternal(handles, signals, num_handles, deadline, &index, |
423 reinterpret_cast<HandleSignalsState*>(signals_state)); | 423 reinterpret_cast<HandleSignalsState*>(signals_state)); |
424 } | 424 } |
425 if (index != static_cast<uint32_t>(-1) && result_index) | 425 if (index != static_cast<uint32_t>(-1) && result_index) |
426 *result_index = index; | 426 *result_index = index; |
427 return rv; | 427 return rv; |
428 } | 428 } |
429 | 429 |
430 MojoResult Core::Watch(MojoHandle handle, | 430 MojoResult Core::RegisterWatcher(MojoHandle handle, |
431 MojoHandleSignals signals, | 431 MojoHandleSignals signals, |
432 MojoWatchCallback callback, | 432 MojoWatchCallback callback, |
433 uintptr_t context) { | 433 uintptr_t context) { |
434 RequestContext request_context; | 434 RequestContext request_context; |
435 scoped_refptr<Dispatcher> dispatcher = GetDispatcher(handle); | 435 scoped_refptr<Dispatcher> dispatcher = GetDispatcher(handle); |
436 if (!dispatcher) | 436 if (!dispatcher) |
437 return MOJO_RESULT_INVALID_ARGUMENT; | 437 return MOJO_RESULT_INVALID_ARGUMENT; |
438 return dispatcher->Watch( | 438 return dispatcher->RegisterWatcher( |
439 signals, base::Bind(&CallWatchCallback, callback, context), context); | 439 signals, base::Bind(&CallWatchCallback, callback, context), context); |
440 } | 440 } |
441 | 441 |
442 MojoResult Core::CancelWatch(MojoHandle handle, uintptr_t context) { | 442 MojoResult Core::ArmWatcher(MojoHandle handle, uintptr_t context) { |
443 RequestContext request_context; | 443 RequestContext request_context; |
444 scoped_refptr<Dispatcher> dispatcher = GetDispatcher(handle); | 444 scoped_refptr<Dispatcher> dispatcher = GetDispatcher(handle); |
445 if (!dispatcher) | 445 if (!dispatcher) |
446 return MOJO_RESULT_INVALID_ARGUMENT; | 446 return MOJO_RESULT_INVALID_ARGUMENT; |
447 return dispatcher->CancelWatch(context); | 447 return dispatcher->ArmWatcher(context); |
| 448 } |
| 449 |
| 450 MojoResult Core::UnregisterWatcher(MojoHandle handle, uintptr_t context) { |
| 451 RequestContext request_context; |
| 452 scoped_refptr<Dispatcher> dispatcher = GetDispatcher(handle); |
| 453 if (!dispatcher) |
| 454 return MOJO_RESULT_INVALID_ARGUMENT; |
| 455 return dispatcher->UnregisterWatcher(context); |
448 } | 456 } |
449 | 457 |
450 MojoResult Core::AllocMessage(uint32_t num_bytes, | 458 MojoResult Core::AllocMessage(uint32_t num_bytes, |
451 const MojoHandle* handles, | 459 const MojoHandle* handles, |
452 uint32_t num_handles, | 460 uint32_t num_handles, |
453 MojoAllocMessageFlags flags, | 461 MojoAllocMessageFlags flags, |
454 MojoMessageHandle* message) { | 462 MojoMessageHandle* message) { |
455 if (!message) | 463 if (!message) |
456 return MOJO_RESULT_INVALID_ARGUMENT; | 464 return MOJO_RESULT_INVALID_ARGUMENT; |
457 | 465 |
(...skipping 711 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1169 std::unique_ptr<NodeController> node_controller) { | 1177 std::unique_ptr<NodeController> node_controller) { |
1170 // It's OK to leak this reference. At this point we know the IO loop is still | 1178 // It's OK to leak this reference. At this point we know the IO loop is still |
1171 // running, and we know the NodeController will observe its eventual | 1179 // running, and we know the NodeController will observe its eventual |
1172 // destruction. This tells the NodeController to delete itself when that | 1180 // destruction. This tells the NodeController to delete itself when that |
1173 // happens. | 1181 // happens. |
1174 node_controller.release()->DestroyOnIOThreadShutdown(); | 1182 node_controller.release()->DestroyOnIOThreadShutdown(); |
1175 } | 1183 } |
1176 | 1184 |
1177 } // namespace edk | 1185 } // namespace edk |
1178 } // namespace mojo | 1186 } // namespace mojo |
OLD | NEW |