| 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/system/dispatcher.h" | 5 #include "mojo/system/dispatcher.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "mojo/system/constants.h" | 8 #include "mojo/system/constants.h" |
| 9 #include "mojo/system/message_pipe_dispatcher.h" | 9 #include "mojo/system/message_pipe_dispatcher.h" |
| 10 #include "mojo/system/platform_handle_dispatcher.h" | 10 #include "mojo/system/platform_handle_dispatcher.h" |
| (...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 208 MojoMapBufferFlags flags, | 208 MojoMapBufferFlags flags, |
| 209 scoped_ptr<RawSharedBufferMapping>* mapping) { | 209 scoped_ptr<RawSharedBufferMapping>* mapping) { |
| 210 base::AutoLock locker(lock_); | 210 base::AutoLock locker(lock_); |
| 211 if (is_closed_) | 211 if (is_closed_) |
| 212 return MOJO_RESULT_INVALID_ARGUMENT; | 212 return MOJO_RESULT_INVALID_ARGUMENT; |
| 213 | 213 |
| 214 return MapBufferImplNoLock(offset, num_bytes, flags, mapping); | 214 return MapBufferImplNoLock(offset, num_bytes, flags, mapping); |
| 215 } | 215 } |
| 216 | 216 |
| 217 MojoResult Dispatcher::AddWaiter(Waiter* waiter, | 217 MojoResult Dispatcher::AddWaiter(Waiter* waiter, |
| 218 MojoWaitFlags flags, | 218 MojoHandleSignals signals, |
| 219 uint32_t context) { | 219 uint32_t context) { |
| 220 base::AutoLock locker(lock_); | 220 base::AutoLock locker(lock_); |
| 221 if (is_closed_) | 221 if (is_closed_) |
| 222 return MOJO_RESULT_INVALID_ARGUMENT; | 222 return MOJO_RESULT_INVALID_ARGUMENT; |
| 223 | 223 |
| 224 return AddWaiterImplNoLock(waiter, flags, context); | 224 return AddWaiterImplNoLock(waiter, signals, context); |
| 225 } | 225 } |
| 226 | 226 |
| 227 void Dispatcher::RemoveWaiter(Waiter* waiter) { | 227 void Dispatcher::RemoveWaiter(Waiter* waiter) { |
| 228 base::AutoLock locker(lock_); | 228 base::AutoLock locker(lock_); |
| 229 if (is_closed_) | 229 if (is_closed_) |
| 230 return; | 230 return; |
| 231 RemoveWaiterImplNoLock(waiter); | 231 RemoveWaiterImplNoLock(waiter); |
| 232 } | 232 } |
| 233 | 233 |
| 234 Dispatcher::Dispatcher() | 234 Dispatcher::Dispatcher() |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 340 uint64_t /*num_bytes*/, | 340 uint64_t /*num_bytes*/, |
| 341 MojoMapBufferFlags /*flags*/, | 341 MojoMapBufferFlags /*flags*/, |
| 342 scoped_ptr<RawSharedBufferMapping>* /*mapping*/) { | 342 scoped_ptr<RawSharedBufferMapping>* /*mapping*/) { |
| 343 lock_.AssertAcquired(); | 343 lock_.AssertAcquired(); |
| 344 DCHECK(!is_closed_); | 344 DCHECK(!is_closed_); |
| 345 // By default, not supported. Only needed for buffer dispatchers. | 345 // By default, not supported. Only needed for buffer dispatchers. |
| 346 return MOJO_RESULT_INVALID_ARGUMENT; | 346 return MOJO_RESULT_INVALID_ARGUMENT; |
| 347 } | 347 } |
| 348 | 348 |
| 349 MojoResult Dispatcher::AddWaiterImplNoLock(Waiter* /*waiter*/, | 349 MojoResult Dispatcher::AddWaiterImplNoLock(Waiter* /*waiter*/, |
| 350 MojoWaitFlags /*flags*/, | 350 MojoHandleSignals /*signals*/, |
| 351 uint32_t /*context*/) { | 351 uint32_t /*context*/) { |
| 352 lock_.AssertAcquired(); | 352 lock_.AssertAcquired(); |
| 353 DCHECK(!is_closed_); | 353 DCHECK(!is_closed_); |
| 354 // By default, waiting isn't supported. Only dispatchers that can be waited on | 354 // By default, waiting isn't supported. Only dispatchers that can be waited on |
| 355 // will do something nontrivial. | 355 // will do something nontrivial. |
| 356 return MOJO_RESULT_FAILED_PRECONDITION; | 356 return MOJO_RESULT_FAILED_PRECONDITION; |
| 357 } | 357 } |
| 358 | 358 |
| 359 void Dispatcher::RemoveWaiterImplNoLock(Waiter* /*waiter*/) { | 359 void Dispatcher::RemoveWaiterImplNoLock(Waiter* /*waiter*/) { |
| 360 lock_.AssertAcquired(); | 360 lock_.AssertAcquired(); |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 452 // DispatcherTransport --------------------------------------------------------- | 452 // DispatcherTransport --------------------------------------------------------- |
| 453 | 453 |
| 454 void DispatcherTransport::End() { | 454 void DispatcherTransport::End() { |
| 455 DCHECK(dispatcher_); | 455 DCHECK(dispatcher_); |
| 456 dispatcher_->lock_.Release(); | 456 dispatcher_->lock_.Release(); |
| 457 dispatcher_ = NULL; | 457 dispatcher_ = NULL; |
| 458 } | 458 } |
| 459 | 459 |
| 460 } // namespace system | 460 } // namespace system |
| 461 } // namespace mojo | 461 } // namespace mojo |
| OLD | NEW |