Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(954)

Unified Diff: mojo/public/cpp/bindings/lib/control_message_proxy.cc

Issue 2277853003: Use unions for interface control messages. (Closed)
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: mojo/public/cpp/bindings/lib/control_message_proxy.cc
diff --git a/mojo/public/cpp/bindings/lib/control_message_proxy.cc b/mojo/public/cpp/bindings/lib/control_message_proxy.cc
index 82230cbefd541f3875bb357d0f5f5f2abad10407..06d9815bc08ba8a6fcfb4741579d60b9a8cd81c8 100644
--- a/mojo/public/cpp/bindings/lib/control_message_proxy.cc
+++ b/mojo/public/cpp/bindings/lib/control_message_proxy.cc
@@ -20,11 +20,12 @@ namespace internal {
namespace {
-using RunCallback = base::Callback<void(QueryVersionResultPtr)>;
+using RunCallback =
+ base::Callback<void(interface_control::RunResponseMessageParamsPtr)>;
class RunResponseForwardToCallback : public MessageReceiver {
public:
- RunResponseForwardToCallback(const RunCallback& callback)
+ explicit RunResponseForwardToCallback(const RunCallback& callback)
: callback_(callback) {}
bool Accept(Message* message) override;
@@ -34,60 +35,64 @@ class RunResponseForwardToCallback : public MessageReceiver {
};
bool RunResponseForwardToCallback::Accept(Message* message) {
- RunResponseMessageParams_Data* params =
- reinterpret_cast<RunResponseMessageParams_Data*>(
+ interface_control::internal::RunResponseMessageParams_Data* params =
+ reinterpret_cast<
+ interface_control::internal::RunResponseMessageParams_Data*>(
message->mutable_payload());
- RunResponseMessageParamsPtr params_ptr;
+ interface_control::RunResponseMessageParamsPtr params_ptr;
SerializationContext context;
- Deserialize<RunResponseMessageParamsDataView>(params, &params_ptr, &context);
+ Deserialize<interface_control::RunResponseMessageParamsDataView>(
+ params, &params_ptr, &context);
- callback_.Run(std::move(params_ptr->query_version_result));
+ callback_.Run(std::move(params_ptr));
return true;
}
void SendRunMessage(MessageReceiverWithResponder* receiver,
- QueryVersionPtr query_version,
+ interface_control::RunInputPtr input_ptr,
const RunCallback& callback,
SerializationContext* context) {
- RunMessageParamsPtr params_ptr(RunMessageParams::New());
- params_ptr->reserved0 = 16u;
- params_ptr->reserved1 = 0u;
- params_ptr->query_version = std::move(query_version);
-
- size_t size =
- PrepareToSerialize<RunMessageParamsDataView>(params_ptr, context);
- RequestMessageBuilder builder(kRunMessageId, size);
-
- RunMessageParams_Data* params = nullptr;
- Serialize<RunMessageParamsDataView>(params_ptr, builder.buffer(), &params,
- context);
+ auto params_ptr = interface_control::RunMessageParams::New();
+ params_ptr->input = std::move(input_ptr);
+ size_t size = PrepareToSerialize<interface_control::RunMessageParamsDataView>(
+ params_ptr, context);
+ RequestMessageBuilder builder(interface_control::kRunMessageId, size);
+
+ interface_control::internal::RunMessageParams_Data* params = nullptr;
+ Serialize<interface_control::RunMessageParamsDataView>(
+ params_ptr, builder.buffer(), &params, context);
MessageReceiver* responder = new RunResponseForwardToCallback(callback);
if (!receiver->AcceptWithResponder(builder.message(), responder))
delete responder;
}
-void SendRunOrClosePipeMessage(MessageReceiverWithResponder* receiver,
- RequireVersionPtr require_version,
- SerializationContext* context) {
- RunOrClosePipeMessageParamsPtr params_ptr(RunOrClosePipeMessageParams::New());
- params_ptr->reserved0 = 16u;
- params_ptr->reserved1 = 0u;
- params_ptr->require_version = std::move(require_version);
-
- size_t size = PrepareToSerialize<RunOrClosePipeMessageParamsDataView>(
- params_ptr, context);
- MessageBuilder builder(kRunOrClosePipeMessageId, size);
-
- RunOrClosePipeMessageParams_Data* params = nullptr;
- Serialize<RunOrClosePipeMessageParamsDataView>(params_ptr, builder.buffer(),
- &params, context);
+void SendRunOrClosePipeMessage(
+ MessageReceiverWithResponder* receiver,
+ interface_control::RunOrClosePipeInputPtr input_ptr,
+ SerializationContext* context) {
+ auto params_ptr = interface_control::RunOrClosePipeMessageParams::New();
+ params_ptr->input = std::move(input_ptr);
+
+ size_t size = PrepareToSerialize<
+ interface_control::RunOrClosePipeMessageParamsDataView>(params_ptr,
+ context);
+ MessageBuilder builder(interface_control::kRunOrClosePipeMessageId, size);
+
+ interface_control::internal::RunOrClosePipeMessageParams_Data* params =
+ nullptr;
+ Serialize<interface_control::RunOrClosePipeMessageParamsDataView>(
+ params_ptr, builder.buffer(), &params, context);
bool ok = receiver->Accept(builder.message());
ALLOW_UNUSED_LOCAL(ok);
}
-void RunVersionCallback(const base::Callback<void(uint32_t)>& callback,
- QueryVersionResultPtr query_version_result) {
- callback.Run(query_version_result->version);
+void RunVersionCallback(
+ const base::Callback<void(uint32_t)>& callback,
+ interface_control::RunResponseMessageParamsPtr run_response) {
+ uint32_t version = 0u;
+ if (run_response->output && run_response->output->is_query_version_result())
+ version = run_response->output->get_query_version_result()->version;
+ callback.Run(version);
}
} // namespace
@@ -98,14 +103,18 @@ ControlMessageProxy::ControlMessageProxy(MessageReceiverWithResponder* receiver)
void ControlMessageProxy::QueryVersion(
const base::Callback<void(uint32_t)>& callback) {
- SendRunMessage(receiver_, QueryVersion::New(),
+ auto input_ptr = interface_control::RunInput::New();
+ input_ptr->set_query_version(interface_control::QueryVersion::New());
+ SendRunMessage(receiver_, std::move(input_ptr),
base::Bind(&RunVersionCallback, callback), &context_);
}
void ControlMessageProxy::RequireVersion(uint32_t version) {
- RequireVersionPtr require_version(RequireVersion::New());
+ auto require_version = interface_control::RequireVersion::New();
require_version->version = version;
- SendRunOrClosePipeMessage(receiver_, std::move(require_version), &context_);
+ auto input_ptr = interface_control::RunOrClosePipeInput::New();
+ input_ptr->set_require_version(std::move(require_version));
+ SendRunOrClosePipeMessage(receiver_, std::move(input_ptr), &context_);
}
} // namespace internal

Powered by Google App Engine
This is Rietveld 408576698