blob: 0b2036dfae16d45527ce3efb0d412af856e97efa [file] [log] [blame]
// 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.
/**
* Package rpc defines interfaces for communication via remote procedure call.
* <p><ul>
* <li>Concept: <a href="https://github.com/vanadium/docs/blob/master/concepts/rpc.md">https://github.com/vanadium/docs/blob/master/concepts/rpc.md</a>.</li>
* <li>Tutorial: (forthcoming)</li>
* </ul><p>
* There are two actors in the system, clients and servers. {@link io.v.v23.rpc.Client}s invoke
* methods on {@link io.v.v23.rpc.Server}s, using the
* {@link io.v.v23.rpc.Client#startCall startCall} method. {@link io.v.v23.rpc.Server}s implement
* methods on named objects. The named object is found using a {@link io.v.v23.rpc.Dispatcher} and
* the method is invoked using an {@link io.v.v23.rpc.Invoker}.
* <p>
* Instances of the {@link io.v.v23.VRuntime} host {@link io.v.v23.rpc.Client}s and
* {@link io.v.v23.rpc.Server}s; such instances may simultaneously host both
* {@link io.v.v23.rpc.Client}s and {@link io.v.v23.rpc.Server}s. The {@link io.v.v23.VRuntime}
* allows multiple names to be simultaneously supported via the {@link io.v.v23.rpc.Dispatcher}
* interface.
* <p>
* The {@code naming} package provides a rendezvous mechanism for {@link io.v.v23.rpc.Client}s and
* {@link io.v.v23.rpc.Server}s. In particular, it allows {@link io.v.v23.VRuntime} hosting
* {@link io.v.v23.rpc.Server}s to share endpoints with {@link io.v.v23.rpc.Client}s that enables
* communication between them. Endpoints encode sufficient addressing information to enable
* communication.
*/
package io.v.v23.rpc;