| Index: mojo/public/cpp/bindings/lib/control_message_handler.cc
|
| diff --git a/mojo/public/cpp/bindings/lib/control_message_handler.cc b/mojo/public/cpp/bindings/lib/control_message_handler.cc
|
| index 75388d105e376ee73c65ef25759cb179b9fed7dc..b9bf7eb54ed5aaf96078f62181e58a42af7aa4ca 100644
|
| --- a/mojo/public/cpp/bindings/lib/control_message_handler.cc
|
| +++ b/mojo/public/cpp/bindings/lib/control_message_handler.cc
|
| @@ -18,8 +18,8 @@ namespace internal {
|
|
|
| // static
|
| bool ControlMessageHandler::IsControlMessage(const Message* message) {
|
| - return message->header()->name == kRunMessageId ||
|
| - message->header()->name == kRunOrClosePipeMessageId;
|
| + return message->header()->name == interface_control::kRunMessageId ||
|
| + message->header()->name == interface_control::kRunOrClosePipeMessageId;
|
| }
|
|
|
| ControlMessageHandler::ControlMessageHandler(uint32_t interface_version)
|
| @@ -30,7 +30,7 @@ ControlMessageHandler::~ControlMessageHandler() {
|
| }
|
|
|
| bool ControlMessageHandler::Accept(Message* message) {
|
| - if (message->header()->name == kRunOrClosePipeMessageId)
|
| + if (message->header()->name == interface_control::kRunOrClosePipeMessageId)
|
| return RunOrClosePipe(message);
|
|
|
| NOTREACHED();
|
| @@ -40,7 +40,7 @@ bool ControlMessageHandler::Accept(Message* message) {
|
| bool ControlMessageHandler::AcceptWithResponder(
|
| Message* message,
|
| MessageReceiverWithStatus* responder) {
|
| - if (message->header()->name == kRunMessageId)
|
| + if (message->header()->name == interface_control::kRunMessageId)
|
| return Run(message, responder);
|
|
|
| NOTREACHED();
|
| @@ -49,19 +49,33 @@ bool ControlMessageHandler::AcceptWithResponder(
|
|
|
| bool ControlMessageHandler::Run(Message* message,
|
| MessageReceiverWithStatus* responder) {
|
| - RunResponseMessageParamsPtr response_params_ptr(
|
| - RunResponseMessageParams::New());
|
| - response_params_ptr->reserved0 = 16u;
|
| - response_params_ptr->reserved1 = 0u;
|
| - response_params_ptr->query_version_result = QueryVersionResult::New();
|
| - response_params_ptr->query_version_result->version = interface_version_;
|
| -
|
| - size_t size = PrepareToSerialize<RunResponseMessageParamsDataView>(
|
| - response_params_ptr, &context_);
|
| - ResponseMessageBuilder builder(kRunMessageId, size, message->request_id());
|
| -
|
| - RunResponseMessageParams_Data* response_params = nullptr;
|
| - Serialize<RunResponseMessageParamsDataView>(
|
| + interface_control::internal::RunMessageParams_Data* params =
|
| + reinterpret_cast<interface_control::internal::RunMessageParams_Data*>(
|
| + message->mutable_payload());
|
| + interface_control::RunMessageParamsPtr params_ptr;
|
| + Deserialize<interface_control::RunMessageParamsDataView>(params, ¶ms_ptr,
|
| + &context_);
|
| + auto& input = *params_ptr->input;
|
| + interface_control::RunOutputPtr output = interface_control::RunOutput::New();
|
| + if (input.is_query_version()) {
|
| + output->set_query_version_result(
|
| + interface_control::QueryVersionResult::New());
|
| + output->get_query_version_result()->version = interface_version_;
|
| + } else {
|
| + output.reset();
|
| + }
|
| +
|
| + auto response_params_ptr = interface_control::RunResponseMessageParams::New();
|
| + response_params_ptr->output = std::move(output);
|
| + size_t size =
|
| + PrepareToSerialize<interface_control::RunResponseMessageParamsDataView>(
|
| + response_params_ptr, &context_);
|
| + ResponseMessageBuilder builder(interface_control::kRunMessageId, size,
|
| + message->request_id());
|
| +
|
| + interface_control::internal::RunResponseMessageParams_Data* response_params =
|
| + nullptr;
|
| + Serialize<interface_control::RunResponseMessageParamsDataView>(
|
| response_params_ptr, builder.buffer(), &response_params, &context_);
|
| bool ok = responder->Accept(builder.message());
|
| ALLOW_UNUSED_LOCAL(ok);
|
| @@ -71,14 +85,18 @@ bool ControlMessageHandler::Run(Message* message,
|
| }
|
|
|
| bool ControlMessageHandler::RunOrClosePipe(Message* message) {
|
| - RunOrClosePipeMessageParams_Data* params =
|
| - reinterpret_cast<RunOrClosePipeMessageParams_Data*>(
|
| + interface_control::internal::RunOrClosePipeMessageParams_Data* params =
|
| + reinterpret_cast<
|
| + interface_control::internal::RunOrClosePipeMessageParams_Data*>(
|
| message->mutable_payload());
|
| - RunOrClosePipeMessageParamsPtr params_ptr;
|
| - Deserialize<RunOrClosePipeMessageParamsDataView>(params, ¶ms_ptr,
|
| - &context_);
|
| + interface_control::RunOrClosePipeMessageParamsPtr params_ptr;
|
| + Deserialize<interface_control::RunOrClosePipeMessageParamsDataView>(
|
| + params, ¶ms_ptr, &context_);
|
| + auto& input = *params_ptr->input;
|
| + if (input.is_require_version())
|
| + return interface_version_ >= input.get_require_version()->version;
|
|
|
| - return interface_version_ >= params_ptr->require_version->version;
|
| + return false;
|
| }
|
|
|
| } // namespace internal
|
|
|