// Copyright 2016 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.

module IPC.mojom;

// NOTE: This MUST match the value of MSG_ROUTING_NONE in src/ipc/ipc_message.h.
const int32 kRoutingIdNone = -2;

struct SerializedHandle {
  handle the_handle;

  enum Type {
    MOJO_HANDLE,
    PLATFORM_FILE,
    WIN_HANDLE,
    MACH_PORT,
  };

  Type type;
};

// A placeholder interface type since we don't yet support generic associated
// message pipe handles.
interface GenericInterface {};

interface Channel {
  // Informs the remote end of this client's PID. Must be called exactly once,
  // before any calls to Receive() below.
  SetPeerPid(int32 pid);

  // Transmits a classical Chrome IPC message.
  Receive(array<uint8> data, array<SerializedHandle>? handles);

  // Requests a Channel-associated interface.
  GetAssociatedInterface(string name, associated GenericInterface& request);
};

// A strictly nominal interface used to identify Channel bootstrap requests.
interface ChannelBootstrap {};
