| // 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"; |
| |
| interface V23 { |
| // 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. |
| SetupProxy(string v23Name, |
| MojomInterface ifaceSig, |
| map<string, UserDefinedType> mapping, |
| string serviceName, |
| handle<message_pipe> futureMessages); |
| |
| // Endpoints gets the endpoints that the v23proxy serves at. |
| Endpoints() => (array<string> endpoints); |
| }; |
| |
| interface Advertiser { |
| // Advertises the existence of a service. |
| Advertise(Service service, array<string> visibility) => (string? InstanceId, string? Error); |
| |
| // Stops advertising a specific instanceId |
| StopAdvertising(string InstanceId); |
| }; |
| |
| // Mostly copied from v.io/v23/discovery/types.vdl |
| struct Service { |
| // The universal unique identifier of a service instance. |
| // If this is not specified, a random 128 bit (16 byte) UUID will be used. |
| string? InstanceId; |
| // Optional name of the service instance. |
| string? InstanceName; |
| // The interface that the service implements. |
| // E.g., 'v.io/v23/services/vtrace.Store'. |
| string InterfaceName; |
| // The service attributes. |
| // E.g., {'resolution': '1024x768'}. |
| map<string, string>? Attrs; |
| // The url of the advertising mojo service |
| string Url; |
| }; |