| 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/dispatcher.h" | 5 #include "mojo/edk/system/dispatcher.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "mojo/edk/system/configuration.h" | 8 #include "mojo/edk/system/configuration.h" |
| 9 #include "mojo/edk/system/data_pipe_consumer_dispatcher.h" | 9 #include "mojo/edk/system/data_pipe_consumer_dispatcher.h" |
| 10 #include "mojo/edk/system/data_pipe_producer_dispatcher.h" | 10 #include "mojo/edk/system/data_pipe_producer_dispatcher.h" |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 133 (dispatchers && dispatchers->empty())); | 133 (dispatchers && dispatchers->empty())); |
| 134 | 134 |
| 135 MutexLocker locker(&mutex_); | 135 MutexLocker locker(&mutex_); |
| 136 if (is_closed_) | 136 if (is_closed_) |
| 137 return MOJO_RESULT_INVALID_ARGUMENT; | 137 return MOJO_RESULT_INVALID_ARGUMENT; |
| 138 | 138 |
| 139 return ReadMessageImplNoLock(bytes, num_bytes, dispatchers, num_dispatchers, | 139 return ReadMessageImplNoLock(bytes, num_bytes, dispatchers, num_dispatchers, |
| 140 flags); | 140 flags); |
| 141 } | 141 } |
| 142 | 142 |
| 143 MojoResult Dispatcher::SetDataPipeProducerOptions( |
| 144 UserPointer<const MojoDataPipeProducerOptions> options) { |
| 145 MutexLocker locker(&mutex_); |
| 146 if (is_closed_) |
| 147 return MOJO_RESULT_INVALID_ARGUMENT; |
| 148 |
| 149 return SetDataPipeProducerOptionsImplNoLock(options); |
| 150 } |
| 151 |
| 152 MojoResult Dispatcher::GetDataPipeProducerOptions( |
| 153 UserPointer<MojoDataPipeProducerOptions> options, |
| 154 uint32_t options_num_bytes) { |
| 155 MutexLocker locker(&mutex_); |
| 156 if (is_closed_) |
| 157 return MOJO_RESULT_INVALID_ARGUMENT; |
| 158 |
| 159 return GetDataPipeProducerOptionsImplNoLock(options, options_num_bytes); |
| 160 } |
| 161 |
| 143 MojoResult Dispatcher::WriteData(UserPointer<const void> elements, | 162 MojoResult Dispatcher::WriteData(UserPointer<const void> elements, |
| 144 UserPointer<uint32_t> num_bytes, | 163 UserPointer<uint32_t> num_bytes, |
| 145 MojoWriteDataFlags flags) { | 164 MojoWriteDataFlags flags) { |
| 146 MutexLocker locker(&mutex_); | 165 MutexLocker locker(&mutex_); |
| 147 if (is_closed_) | 166 if (is_closed_) |
| 148 return MOJO_RESULT_INVALID_ARGUMENT; | 167 return MOJO_RESULT_INVALID_ARGUMENT; |
| 149 | 168 |
| 150 return WriteDataImplNoLock(elements, num_bytes, flags); | 169 return WriteDataImplNoLock(elements, num_bytes, flags); |
| 151 } | 170 } |
| 152 | 171 |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 319 UserPointer<uint32_t> /*num_bytes*/, | 338 UserPointer<uint32_t> /*num_bytes*/, |
| 320 DispatcherVector* /*dispatchers*/, | 339 DispatcherVector* /*dispatchers*/, |
| 321 uint32_t* /*num_dispatchers*/, | 340 uint32_t* /*num_dispatchers*/, |
| 322 MojoReadMessageFlags /*flags*/) { | 341 MojoReadMessageFlags /*flags*/) { |
| 323 mutex_.AssertHeld(); | 342 mutex_.AssertHeld(); |
| 324 DCHECK(!is_closed_); | 343 DCHECK(!is_closed_); |
| 325 // By default, not supported. Only needed for message pipe dispatchers. | 344 // By default, not supported. Only needed for message pipe dispatchers. |
| 326 return MOJO_RESULT_INVALID_ARGUMENT; | 345 return MOJO_RESULT_INVALID_ARGUMENT; |
| 327 } | 346 } |
| 328 | 347 |
| 348 MojoResult Dispatcher::SetDataPipeProducerOptionsImplNoLock( |
| 349 UserPointer<const MojoDataPipeProducerOptions> /*options*/) { |
| 350 mutex_.AssertHeld(); |
| 351 DCHECK(!is_closed_); |
| 352 return MOJO_RESULT_INVALID_ARGUMENT; |
| 353 } |
| 354 |
| 355 MojoResult Dispatcher::GetDataPipeProducerOptionsImplNoLock( |
| 356 UserPointer<MojoDataPipeProducerOptions> /*options*/, |
| 357 uint32_t /*options_num_bytes*/) { |
| 358 mutex_.AssertHeld(); |
| 359 DCHECK(!is_closed_); |
| 360 return MOJO_RESULT_INVALID_ARGUMENT; |
| 361 } |
| 362 |
| 329 MojoResult Dispatcher::WriteDataImplNoLock(UserPointer<const void> /*elements*/, | 363 MojoResult Dispatcher::WriteDataImplNoLock(UserPointer<const void> /*elements*/, |
| 330 UserPointer<uint32_t> /*num_bytes*/, | 364 UserPointer<uint32_t> /*num_bytes*/, |
| 331 MojoWriteDataFlags /*flags*/) { | 365 MojoWriteDataFlags /*flags*/) { |
| 332 mutex_.AssertHeld(); | 366 mutex_.AssertHeld(); |
| 333 DCHECK(!is_closed_); | 367 DCHECK(!is_closed_); |
| 334 // By default, not supported. Only needed for data pipe dispatchers. | 368 // By default, not supported. Only needed for data pipe dispatchers. |
| 335 return MOJO_RESULT_INVALID_ARGUMENT; | 369 return MOJO_RESULT_INVALID_ARGUMENT; |
| 336 } | 370 } |
| 337 | 371 |
| 338 MojoResult Dispatcher::BeginWriteDataImplNoLock( | 372 MojoResult Dispatcher::BeginWriteDataImplNoLock( |
| (...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 541 // DispatcherTransport --------------------------------------------------------- | 575 // DispatcherTransport --------------------------------------------------------- |
| 542 | 576 |
| 543 void DispatcherTransport::End() { | 577 void DispatcherTransport::End() { |
| 544 DCHECK(dispatcher_); | 578 DCHECK(dispatcher_); |
| 545 dispatcher_->mutex_.Unlock(); | 579 dispatcher_->mutex_.Unlock(); |
| 546 dispatcher_ = nullptr; | 580 dispatcher_ = nullptr; |
| 547 } | 581 } |
| 548 | 582 |
| 549 } // namespace system | 583 } // namespace system |
| 550 } // namespace mojo | 584 } // namespace mojo |
| OLD | NEW |