blob: 2143c06cce5c64a015599e3fb040628964637ded [file] [log] [blame]
// 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;
};