Index: third_party/mojo/src/mojo/edk/system/local_message_pipe_endpoint.cc |
diff --git a/third_party/mojo/src/mojo/edk/system/local_message_pipe_endpoint.cc b/third_party/mojo/src/mojo/edk/system/local_message_pipe_endpoint.cc |
index 1800aa48db7d49989bdeccfcfd9a107d7a739f6b..0f93efd4359fe26897bef4d669f102c23f26c68e 100644 |
--- a/third_party/mojo/src/mojo/edk/system/local_message_pipe_endpoint.cc |
+++ b/third_party/mojo/src/mojo/edk/system/local_message_pipe_endpoint.cc |
@@ -54,6 +54,17 @@ void LocalMessagePipeEndpoint::EnqueueMessage( |
awakable_list_.AwakeForStateChange(GetHandleSignalsState()); |
} |
+void LocalMessagePipeEndpoint::OnReadMessage( |
+ MessageInTransit::ReadContext& reading_message) { |
+ if (!message_callback_.is_null() && !reading_message.has_dispatchers()) { |
+ if (message_callback_.Run(reading_message.view().bytes(), |
+ reading_message.view().num_bytes())) |
+ return; |
+ } |
+ |
+ MessagePipeEndpoint::OnReadMessage(reading_message); |
+} |
+ |
void LocalMessagePipeEndpoint::Close() { |
DCHECK(is_open_); |
is_open_ = false; |
@@ -179,5 +190,11 @@ void LocalMessagePipeEndpoint::RemoveAwakable( |
*signals_state = GetHandleSignalsState(); |
} |
+MojoResult LocalMessagePipeEndpoint::SetAsyncMessageCallback( |
+ const AsyncMessageCallback& callback) { |
+ message_callback_ = callback; |
+ return MOJO_RESULT_OK; |
+} |
+ |
} // namespace system |
} // namespace mojo |