| Index: mojo/edk/system/data_pipe_producer_dispatcher.cc
|
| diff --git a/mojo/edk/system/data_pipe_producer_dispatcher.cc b/mojo/edk/system/data_pipe_producer_dispatcher.cc
|
| index 71c61963e23f60d50dbd858b2473600c0085bf45..b0102a6d9b007ff6d8a1489fce9e4a38445a77d2 100644
|
| --- a/mojo/edk/system/data_pipe_producer_dispatcher.cc
|
| +++ b/mojo/edk/system/data_pipe_producer_dispatcher.cc
|
| @@ -128,8 +128,6 @@ MojoResult DataPipeProducerDispatcher::WriteData(const void* elements,
|
| if (num_bytes_to_write == 0)
|
| return MOJO_RESULT_SHOULD_WAIT;
|
|
|
| - HandleSignalsState old_state = GetHandleSignalsStateNoLock();
|
| -
|
| *num_bytes = num_bytes_to_write;
|
|
|
| CHECK(ring_buffer_mapping_);
|
| @@ -155,10 +153,7 @@ MojoResult DataPipeProducerDispatcher::WriteData(const void* elements,
|
| write_offset_ = (write_offset_ + num_bytes_to_write) %
|
| options_.capacity_num_bytes;
|
|
|
| - HandleSignalsState new_state = GetHandleSignalsStateNoLock();
|
| - if (!new_state.equals(old_state))
|
| - awakable_list_.AwakeForStateChange(new_state);
|
| - watchers_.NotifyState(new_state);
|
| + watchers_.NotifyState(GetHandleSignalsStateNoLock());
|
|
|
| base::AutoUnlock unlock(lock_);
|
| NotifyWrite(num_bytes_to_write);
|
| @@ -232,11 +227,8 @@ MojoResult DataPipeProducerDispatcher::EndWriteData(
|
| in_two_phase_write_ = false;
|
|
|
| // If we're now writable, we *became* writable (since we weren't writable
|
| - // during the two-phase write), so awake producer awakables.
|
| - HandleSignalsState new_state = GetHandleSignalsStateNoLock();
|
| - if (new_state.satisfies(MOJO_HANDLE_SIGNAL_WRITABLE))
|
| - awakable_list_.AwakeForStateChange(new_state);
|
| - watchers_.NotifyState(new_state);
|
| + // during the two-phase write), so notify watchers.
|
| + watchers_.NotifyState(GetHandleSignalsStateNoLock());
|
|
|
| return rv;
|
| }
|
| @@ -264,45 +256,6 @@ MojoResult DataPipeProducerDispatcher::RemoveWatcherRef(
|
| return watchers_.Remove(watcher, context);
|
| }
|
|
|
| -MojoResult DataPipeProducerDispatcher::AddAwakable(
|
| - Awakable* awakable,
|
| - MojoHandleSignals signals,
|
| - uintptr_t context,
|
| - HandleSignalsState* signals_state) {
|
| - base::AutoLock lock(lock_);
|
| - if (!shared_ring_buffer_ || in_transit_) {
|
| - if (signals_state)
|
| - *signals_state = HandleSignalsState();
|
| - return MOJO_RESULT_INVALID_ARGUMENT;
|
| - }
|
| - UpdateSignalsStateNoLock();
|
| - HandleSignalsState state = GetHandleSignalsStateNoLock();
|
| - if (state.satisfies(signals)) {
|
| - if (signals_state)
|
| - *signals_state = state;
|
| - return MOJO_RESULT_ALREADY_EXISTS;
|
| - }
|
| - if (!state.can_satisfy(signals)) {
|
| - if (signals_state)
|
| - *signals_state = state;
|
| - return MOJO_RESULT_FAILED_PRECONDITION;
|
| - }
|
| -
|
| - awakable_list_.Add(awakable, signals, context);
|
| - return MOJO_RESULT_OK;
|
| -}
|
| -
|
| -void DataPipeProducerDispatcher::RemoveAwakable(
|
| - Awakable* awakable,
|
| - HandleSignalsState* signals_state) {
|
| - base::AutoLock lock(lock_);
|
| - if ((!shared_ring_buffer_ || in_transit_) && signals_state)
|
| - *signals_state = HandleSignalsState();
|
| - else if (signals_state)
|
| - *signals_state = GetHandleSignalsStateNoLock();
|
| - awakable_list_.Remove(awakable);
|
| -}
|
| -
|
| void DataPipeProducerDispatcher::StartSerialize(uint32_t* num_bytes,
|
| uint32_t* num_ports,
|
| uint32_t* num_handles) {
|
| @@ -362,7 +315,6 @@ void DataPipeProducerDispatcher::CancelTransit() {
|
| buffer_handle_for_transit_.reset();
|
|
|
| HandleSignalsState state = GetHandleSignalsStateNoLock();
|
| - awakable_list_.AwakeForStateChange(state);
|
| watchers_.NotifyState(state);
|
| }
|
|
|
| @@ -446,7 +398,6 @@ MojoResult DataPipeProducerDispatcher::CloseNoLock() {
|
| ring_buffer_mapping_.reset();
|
| shared_ring_buffer_ = nullptr;
|
|
|
| - awakable_list_.CancelAll();
|
| watchers_.NotifyClosed();
|
| if (!transferred_) {
|
| base::AutoUnlock unlock(lock_);
|
| @@ -548,9 +499,7 @@ void DataPipeProducerDispatcher::UpdateSignalsStateNoLock() {
|
|
|
| if (peer_closed_ != was_peer_closed ||
|
| available_capacity_ != previous_capacity) {
|
| - HandleSignalsState state = GetHandleSignalsStateNoLock();
|
| - awakable_list_.AwakeForStateChange(state);
|
| - watchers_.NotifyState(state);
|
| + watchers_.NotifyState(GetHandleSignalsStateNoLock());
|
| }
|
| }
|
|
|
|
|