| OLD | NEW |
| (Empty) | |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 module mojo.internal; |
| 6 |
| 7 // For each message pipe representing a user-defined interface, some control |
| 8 // functions are provided at the same end of the message pipe as the |
| 9 // user-defined interface, providing information about the user-defined |
| 10 // interface and controlling behavior of the message pipe. |
| 11 |
| 12 //////////////////////////////////////////////////////////////////////////////// |
| 13 // Run@0xFFFFFFFF(RunInput input) => (RunOutput? output); |
| 14 // |
| 15 // This control function runs the input command. If the command is not |
| 16 // supported, |output| is set to null; otherwise |output| stores the result, |
| 17 // whose type depends on the input. |
| 18 // |
| 19 // TODO(yzshen): Once union support is ready, switch the following definition |
| 20 // to: |
| 21 // struct RunMessageParams { |
| 22 // RunInput input; |
| 23 // }; |
| 24 // union RunInput { |
| 25 // QueryVersion query_version; |
| 26 // }; |
| 27 // |
| 28 // struct RunResponseMessageParams { |
| 29 // RunOutput? output; |
| 30 // }; |
| 31 // union RunOutput { |
| 32 // QueryVersionResult query_version_result; |
| 33 // }; |
| 34 |
| 35 const uint32 kRunMessageId = 0xFFFFFFFF; |
| 36 |
| 37 struct RunMessageParams { |
| 38 // The reserved fields make the layout compatible with the RunInput union |
| 39 // described above. |
| 40 uint32 reserved0; // Must be set to 16. |
| 41 uint32 reserved1; // Must be set to 0; |
| 42 QueryVersion query_version; |
| 43 }; |
| 44 |
| 45 struct RunResponseMessageParams { |
| 46 // The reserved fields make the layout compatible with the RunOutput union |
| 47 // described above. |
| 48 uint32 reserved0; // Must be set to 16. |
| 49 uint32 reserved1; // Must be set to 0. |
| 50 QueryVersionResult query_version_result; |
| 51 }; |
| 52 |
| 53 // Queries the max supported version of the user-defined interface. |
| 54 struct QueryVersion { |
| 55 }; |
| 56 struct QueryVersionResult { |
| 57 uint32 version; |
| 58 }; |
| 59 |
| 60 //////////////////////////////////////////////////////////////////////////////// |
| 61 // RunOrClosePipe@0xFFFFFFFE(RunOrClosePipeInput input); |
| 62 // |
| 63 // This control function runs the input command. If the operation fails or the |
| 64 // command is not supported, the message pipe is closed. |
| 65 // |
| 66 // TODO(yzshen): Once union support is ready, switch the following definition |
| 67 // to: |
| 68 // struct RunOrClosePipeMessageParams { |
| 69 // RunOrClosePipeInput input; |
| 70 // }; |
| 71 // union RunOrClosePipeInput { |
| 72 // RequireVersion require_version; |
| 73 // }; |
| 74 |
| 75 const uint32 kRunOrClosePipeMessageId = 0xFFFFFFFE; |
| 76 |
| 77 struct RunOrClosePipeMessageParams { |
| 78 // The reserved fields make the layout compatible with the RunOrClosePipeInput |
| 79 // union described above. |
| 80 uint32 reserved0; // Must be set to 16. |
| 81 uint32 reserved1; // Must be set to 0. |
| 82 RequireVersion require_version; |
| 83 }; |
| 84 |
| 85 // If the specified version of the user-defined interface is not supported, the |
| 86 // function fails and the pipe is closed. |
| 87 struct RequireVersion { |
| 88 uint32 version; |
| 89 }; |
| OLD | NEW |