// 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"] module mojo; // For each user-defined interface, some control functions are provided at the // same end of the message pipe as the user-defined interface, providing // information about the user-defined interface. //////////////////////////////////////////////////////////////////////////////// // 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. // // TODO(yzshen): Once union support is ready, switch the following definition // to: // struct RunMessageParams { // RunInput input; // }; // union RunInput { // QueryVersion query_version; // }; // // struct RunResponseMessageParams { // RunOutput? output; // }; // union RunOutput { // QueryVersionResult query_version_result; // }; const uint32 kRunMessageId = 0xFFFFFFFF; struct RunMessageParams { // The reserved fields make the layout compatible with the RunInput union // described above. uint32 reserved0; // Must be set to 16. uint32 reserved1; // Must be set to 0; QueryVersion query_version; }; struct RunResponseMessageParams { // The reserved fields make the layout compatible with the RunOutput union // described above. uint32 reserved0; // Must be set to 16. uint32 reserved1; // Must be set to 0. QueryVersionResult query_version_result; }; // Queries the max supported version of the user-defined interface. struct QueryVersion { }; struct QueryVersionResult { uint32 version; }; //////////////////////////////////////////////////////////////////////////////// // 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. // // TODO(yzshen): Once union support is ready, switch the following definition // to: // struct RunOrClosePipeMessageParams { // RunOrClosePipeInput input; // }; // union RunOrClosePipeInput { // RequireVersion require_version; // }; const uint32 kRunOrClosePipeMessageId = 0xFFFFFFFE; struct RunOrClosePipeMessageParams { // The reserved fields make the layout compatible with the RunOrClosePipeInput // union described above. uint32 reserved0; // Must be set to 16. uint32 reserved1; // Must be set to 0. RequireVersion require_version; }; // If the specified version of the user-defined interface is not supported, the // function fails and the pipe is closed. struct RequireVersion { uint32 version; };