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

Unified Diff: third_party/mojo/src/mojo/public/java/bindings/src/org/chromium/mojo/bindings/InterfaceControlMessagesHelper.java

Issue 1127293003: Update mojo sdk to rev f84766d3b6420b7cf6a113d9d65d73cb5fe18d90 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: formatting Created 5 years, 7 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: third_party/mojo/src/mojo/public/java/bindings/src/org/chromium/mojo/bindings/InterfaceControlMessagesHelper.java
diff --git a/third_party/mojo/src/mojo/public/java/bindings/src/org/chromium/mojo/bindings/InterfaceControlMessagesHelper.java b/third_party/mojo/src/mojo/public/java/bindings/src/org/chromium/mojo/bindings/InterfaceControlMessagesHelper.java
new file mode 100644
index 0000000000000000000000000000000000000000..939fb93988a2df36618aa4a4de62e7ac8b6f6319
--- /dev/null
+++ b/third_party/mojo/src/mojo/public/java/bindings/src/org/chromium/mojo/bindings/InterfaceControlMessagesHelper.java
@@ -0,0 +1,89 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.mojo.bindings;
+
+import org.chromium.mojo.bindings.Callbacks.Callback1;
+import org.chromium.mojo.bindings.Interface.Manager;
+import org.chromium.mojo.bindings.Interface.Proxy;
+import org.chromium.mojo.system.Core;
+
+/**
+ * Helper class to handle interface control messages. See
+ * mojo/public/interfaces/bindings/interface_control_messages.mojom.
+ */
+public class InterfaceControlMessagesHelper {
+ /**
+ * MessageReceiver that forwards a message containing a {@link RunResponseMessageParams} to a
+ * callback.
+ */
+ private static class RunResponseForwardToCallback
+ extends SideEffectFreeCloseable implements MessageReceiver {
+ private final Callback1<RunResponseMessageParams> mCallback;
+
+ RunResponseForwardToCallback(Callback1<RunResponseMessageParams> callback) {
+ mCallback = callback;
+ }
+
+ /**
+ * @see MessageReceiver#accept(Message)
+ */
+ @Override
+ public boolean accept(Message message) {
+ RunResponseMessageParams response =
+ RunResponseMessageParams.deserialize(message.asServiceMessage().getPayload());
+ mCallback.call(response);
+ return true;
+ }
+ }
+
+ /**
+ * Sends the given run message through the receiver, registering the callback.
+ */
+ public static void sendRunMessage(Core core, MessageReceiverWithResponder receiver,
+ RunMessageParams params, Callback1<RunResponseMessageParams> callback) {
+ Message message = params.serializeWithHeader(
+ core, new MessageHeader(InterfaceControlMessagesConstants.RUN_MESSAGE_ID,
+ MessageHeader.MESSAGE_EXPECTS_RESPONSE_FLAG, 0));
+ receiver.acceptWithResponder(message, new RunResponseForwardToCallback(callback));
+ }
+
+ /**
+ * Sends the given run or close pipe message through the receiver.
+ */
+ public static void sendRunOrClosePipeMessage(
+ Core core, MessageReceiverWithResponder receiver, RunOrClosePipeMessageParams params) {
+ Message message = params.serializeWithHeader(core,
+ new MessageHeader(InterfaceControlMessagesConstants.RUN_OR_CLOSE_PIPE_MESSAGE_ID));
+ receiver.accept(message);
+ }
+
+ /**
+ * Handles a received run message.
+ */
+ public static <I extends Interface, P extends Proxy> boolean handleRun(
+ Core core, Manager<I, P> manager, ServiceMessage message, MessageReceiver responder) {
+ RunResponseMessageParams response = new RunResponseMessageParams();
+ response.reserved0 = 16;
+ response.reserved1 = 0;
+ response.queryVersionResult = new QueryVersionResult();
+ response.queryVersionResult.version = manager.getVersion();
+
+ return responder.accept(response.serializeWithHeader(
+ core, new MessageHeader(InterfaceControlMessagesConstants.RUN_MESSAGE_ID,
+ MessageHeader.MESSAGE_IS_RESPONSE_FLAG,
+ message.getHeader().getRequestId())));
+ }
+
+ /**
+ * Handles a received run or close pipe message. Closing the pipe is handled by returning
+ * |false|.
+ */
+ public static <I extends Interface, P extends Proxy> boolean handleRunOrClosePipe(
+ Manager<I, P> manager, ServiceMessage message) {
+ Message payload = message.getPayload();
+ RunOrClosePipeMessageParams query = RunOrClosePipeMessageParams.deserialize(payload);
+ return query.requireVersion.version <= manager.getVersion();
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698