| // 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. |
| |
| [DartPackage="mojo", |
| JavaPackage="org.chromium.mojo.bindings"] |
| module mojo; |
| |
| // For each message pipe representing a 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 and controlling behavior of the message pipe. |
| |
| //////////////////////////////////////////////////////////////////////////////// |
| // 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; |
| }; |