// Copyright 2015 The Vanadium 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 mojo.bindings.types;
//module v23proxy; // TODO(bprosnitz) Ideally, this would be in v23proxy. This is in mojo.bindings.types because importing across modules is broken in mojo.

import "mojo/public/interfaces/bindings/mojom_types.mojom";

[ServiceName="v23::v23proxy::V23ClientProxy"]
interface V23ClientProxy {
  // Sets up a communication channel between the caller and the mojo application
  // running in a remote process.
  //
  // v23Name: Vanadium object name (i.e., "address") at which the remote mojo
  //          application is running.
  // ifaceSig: Interface that the remote mojo application is expected to
  //           implement.
  // mapping:  Type definitions (indexed by type name) of the various types
  //           described in ifaceSig.
  // serviceName: Name of the mojo application (i.e., the name that would be
  //              used if connecting to the application locally).
  // futureMessages: Pipe over which messages can be sent to/received from
  //                 serviceName running on the remote service v23Name.
  SetupClientProxy(string v23Name,
             MojomInterface ifaceSig,
             map<string, UserDefinedType> mapping,
             string serviceName,
             handle<message_pipe> futureMessages);
};
