// 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. [JavaPackage="org.chromium.mojo.bindings.interfacecontrol"] module mojo.interface_control2; // For each user-defined interface, some control functions are provided by the // interface endpoints at both sides. //////////////////////////////////////////////////////////////////////////////// // Run@0xFFFFFFFF(RunInput input) => (RunOutput? output); // // This control function runs the input command. If the command is not // supported, |output| is set to null; otherwise |output| stores the result, // whose type depends on the input. const uint32 kRunMessageId = 0xFFFFFFFF; struct RunMessageParams { RunInput input; }; union RunInput { QueryVersion query_version; FlushForTesting flush_for_testing; }; struct RunResponseMessageParams { RunOutput? output; }; union RunOutput { QueryVersionResult query_version_result; }; // Queries the max supported version of the user-defined interface. // Sent by the interface client side. struct QueryVersion { }; struct QueryVersionResult { uint32 version; }; // Sent by either side of the interface. struct FlushForTesting { }; //////////////////////////////////////////////////////////////////////////////// // RunOrClosePipe@0xFFFFFFFE(RunOrClosePipeInput input); // // This control function runs the input command. If the operation fails or the // command is not supported, the message pipe is closed. const uint32 kRunOrClosePipeMessageId = 0xFFFFFFFE; struct RunOrClosePipeMessageParams { RunOrClosePipeInput input; }; union RunOrClosePipeInput { RequireVersion require_version; }; // If the specified version of the user-defined interface is not supported, the // function fails and the pipe is closed. // Sent by the interface client side. struct RequireVersion { uint32 version; };