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 1bcd87daf9ef56103b30255ec0a5ce83c2fd51ad..225af31656dd27b666d3984279470120bb3798dd 100644 |
--- a/mojo/public/cpp/bindings/lib/control_message_handler.cc |
+++ b/mojo/public/cpp/bindings/lib/control_message_handler.cc |
@@ -9,6 +9,7 @@ |
#include <utility> |
#include "base/logging.h" |
+#include "base/macros.h" |
#include "mojo/public/cpp/bindings/lib/message_builder.h" |
#include "mojo/public/cpp/bindings/lib/serialization.h" |
#include "mojo/public/interfaces/bindings/interface_control_messages.mojom.h" |
@@ -22,33 +23,35 @@ bool ControlMessageHandler::IsControlMessage(const Message* message) { |
message->header()->name == kRunOrClosePipeMessageId; |
} |
-ControlMessageHandler::ControlMessageHandler(uint32_t interface_version) |
- : interface_version_(interface_version) { |
+ControlMessageHandler::ControlMessageHandler(const char* interface_name, |
+ uint32_t interface_version) |
+ : interface_name_(interface_name), interface_version_(interface_version) { |
} |
ControlMessageHandler::~ControlMessageHandler() { |
} |
-bool ControlMessageHandler::Accept(Message* message) { |
+MessageReceiver::Result ControlMessageHandler::Accept(Message* message) { |
if (message->header()->name == kRunOrClosePipeMessageId) |
return RunOrClosePipe(message); |
NOTREACHED(); |
- return false; |
+ return Result::ForUnknownError(); |
} |
-bool ControlMessageHandler::AcceptWithResponder( |
+MessageReceiver::Result ControlMessageHandler::AcceptWithResponder( |
Message* message, |
MessageReceiverWithStatus* responder) { |
if (message->header()->name == kRunMessageId) |
return Run(message, responder); |
NOTREACHED(); |
- return false; |
+ return Result::ForUnknownError(); |
} |
-bool ControlMessageHandler::Run(Message* message, |
- MessageReceiverWithStatus* responder) { |
+MessageReceiver::Result ControlMessageHandler::Run( |
+ Message* message, |
+ MessageReceiverWithStatus* responder) { |
RunResponseMessageParamsPtr response_params_ptr( |
RunResponseMessageParams::New()); |
response_params_ptr->reserved0 = 16u; |
@@ -64,14 +67,15 @@ bool ControlMessageHandler::Run(Message* message, |
Serialize<RunResponseMessageParamsPtr>(response_params_ptr, builder.buffer(), |
&response_params, &context_); |
response_params->EncodePointers(); |
- bool ok = responder->Accept(builder.message()); |
- ALLOW_UNUSED_LOCAL(ok); |
+ |
+ ignore_result(responder->Accept(builder.message())); |
delete responder; |
- return true; |
+ return Result::ForSuccess(); |
} |
-bool ControlMessageHandler::RunOrClosePipe(Message* message) { |
+MessageReceiver::Result ControlMessageHandler::RunOrClosePipe( |
+ Message* message) { |
RunOrClosePipeMessageParams_Data* params = |
reinterpret_cast<RunOrClosePipeMessageParams_Data*>( |
message->mutable_payload()); |
@@ -80,7 +84,10 @@ bool ControlMessageHandler::RunOrClosePipe(Message* message) { |
RunOrClosePipeMessageParamsPtr params_ptr; |
Deserialize<RunOrClosePipeMessageParamsPtr>(params, ¶ms_ptr, &context_); |
- return interface_version_ >= params_ptr->require_version->version; |
+ if (interface_version_ < params_ptr->require_version->version) |
+ return Result::ForUnexpectedRequest(interface_name_, message); |
+ |
+ return Result::ForSuccess(); |
} |
} // namespace internal |