| Index: mojo/public/cpp/bindings/lib/pipe_control_message_proxy.cc
|
| diff --git a/mojo/public/cpp/bindings/lib/pipe_control_message_proxy.cc b/mojo/public/cpp/bindings/lib/pipe_control_message_proxy.cc
|
| index e2155e793563ec672014d7a0dfc47eaf3f74ccf3..87b59c35cf3da182e6e69ec75b9f5fb773152491 100644
|
| --- a/mojo/public/cpp/bindings/lib/pipe_control_message_proxy.cc
|
| +++ b/mojo/public/cpp/bindings/lib/pipe_control_message_proxy.cc
|
| @@ -11,32 +11,28 @@
|
| #include "base/logging.h"
|
| #include "mojo/public/cpp/bindings/lib/message_builder.h"
|
| #include "mojo/public/cpp/bindings/lib/serialization.h"
|
| -#include "mojo/public/cpp/bindings/message.h"
|
| #include "mojo/public/interfaces/bindings/pipe_control_messages.mojom.h"
|
|
|
| namespace mojo {
|
| namespace {
|
|
|
| -void SendRunOrClosePipeMessage(MessageReceiver* receiver,
|
| - pipe_control::RunOrClosePipeInputPtr input,
|
| - internal::SerializationContext* context) {
|
| - pipe_control::RunOrClosePipeMessageParamsPtr params_ptr(
|
| - pipe_control::RunOrClosePipeMessageParams::New());
|
| - params_ptr->input = std::move(input);
|
| +Message ConstructRunOrClosePipeMessage(
|
| + pipe_control::RunOrClosePipeInputPtr input_ptr) {
|
| + internal::SerializationContext context;
|
| +
|
| + auto params_ptr = pipe_control::RunOrClosePipeMessageParams::New();
|
| + params_ptr->input = std::move(input_ptr);
|
|
|
| size_t size = internal::PrepareToSerialize<
|
| - pipe_control::RunOrClosePipeMessageParamsDataView>(params_ptr, context);
|
| + pipe_control::RunOrClosePipeMessageParamsDataView>(params_ptr, &context);
|
| internal::MessageBuilder builder(pipe_control::kRunOrClosePipeMessageId,
|
| size);
|
|
|
| pipe_control::internal::RunOrClosePipeMessageParams_Data* params = nullptr;
|
| internal::Serialize<pipe_control::RunOrClosePipeMessageParamsDataView>(
|
| - params_ptr, builder.buffer(), ¶ms, context);
|
| + params_ptr, builder.buffer(), ¶ms, &context);
|
| builder.message()->set_interface_id(kInvalidInterfaceId);
|
| - bool ok = receiver->Accept(builder.message());
|
| - // This return value may be ignored as !ok implies the underlying message pipe
|
| - // has encountered an error, which will be visible through other means.
|
| - ALLOW_UNUSED_LOCAL(ok);
|
| + return std::move(*builder.message());
|
| }
|
|
|
| } // namespace
|
| @@ -44,32 +40,44 @@ void SendRunOrClosePipeMessage(MessageReceiver* receiver,
|
| PipeControlMessageProxy::PipeControlMessageProxy(MessageReceiver* receiver)
|
| : receiver_(receiver) {}
|
|
|
| -void PipeControlMessageProxy::NotifyPeerEndpointClosed(InterfaceId id) {
|
| +void PipeControlMessageProxy::NotifyPeerEndpointClosed(
|
| + InterfaceId id,
|
| + const base::Optional<DisconnectReason>& reason) {
|
| + Message message(ConstructPeerEndpointClosedMessage(id, reason));
|
| + bool ok = receiver_->Accept(&message);
|
| + ALLOW_UNUSED_LOCAL(ok);
|
| +}
|
| +
|
| +void PipeControlMessageProxy::NotifyEndpointClosedBeforeSent(InterfaceId id) {
|
| DCHECK(!IsMasterInterfaceId(id));
|
| - pipe_control::PeerAssociatedEndpointClosedEventPtr event(
|
| - pipe_control::PeerAssociatedEndpointClosedEvent::New());
|
| +
|
| + auto event = pipe_control::AssociatedEndpointClosedBeforeSentEvent::New();
|
| event->id = id;
|
|
|
| - pipe_control::RunOrClosePipeInputPtr input(
|
| - pipe_control::RunOrClosePipeInput::New());
|
| - input->set_peer_associated_endpoint_closed_event(std::move(event));
|
| + auto input = pipe_control::RunOrClosePipeInput::New();
|
| + input->set_associated_endpoint_closed_before_sent_event(std::move(event));
|
|
|
| - internal::SerializationContext context;
|
| - SendRunOrClosePipeMessage(receiver_, std::move(input), &context);
|
| + Message message(ConstructRunOrClosePipeMessage(std::move(input)));
|
| + bool ok = receiver_->Accept(&message);
|
| + ALLOW_UNUSED_LOCAL(ok);
|
| }
|
|
|
| -void PipeControlMessageProxy::NotifyEndpointClosedBeforeSent(InterfaceId id) {
|
| - DCHECK(!IsMasterInterfaceId(id));
|
| - pipe_control::AssociatedEndpointClosedBeforeSentEventPtr event(
|
| - pipe_control::AssociatedEndpointClosedBeforeSentEvent::New());
|
| +// static
|
| +Message PipeControlMessageProxy::ConstructPeerEndpointClosedMessage(
|
| + InterfaceId id,
|
| + const base::Optional<DisconnectReason>& reason) {
|
| + auto event = pipe_control::PeerAssociatedEndpointClosedEvent::New();
|
| event->id = id;
|
| + if (reason) {
|
| + event->disconnect_reason = pipe_control::DisconnectReason::New();
|
| + event->disconnect_reason->custom_reason = reason->custom_reason;
|
| + event->disconnect_reason->description = reason->description;
|
| + }
|
|
|
| - pipe_control::RunOrClosePipeInputPtr input(
|
| - pipe_control::RunOrClosePipeInput::New());
|
| - input->set_associated_endpoint_closed_before_sent_event(std::move(event));
|
| + auto input = pipe_control::RunOrClosePipeInput::New();
|
| + input->set_peer_associated_endpoint_closed_event(std::move(event));
|
|
|
| - internal::SerializationContext context;
|
| - SendRunOrClosePipeMessage(receiver_, std::move(input), &context);
|
| + return ConstructRunOrClosePipeMessage(std::move(input));
|
| }
|
|
|
| } // namespace mojo
|
|
|