# README
yarpc

A message passing platform for Go that lets you:
- Write servers and clients with various encodings, including JSON, Thrift, and Protobuf.
- Expose servers over many transports simultaneously, including HTTP/1.1, gRPC, and TChannel.
- Migrate outbound calls between transports without any code changes using config.
Installation
We recommend locking to SemVer range ^1
using Glide:
glide get 'go.uber.org/yarpc#^1'
Stability
This library is v1
and follows SemVer strictly.
No breaking changes will be made to exported APIs before v2.0.0
with the
exception of experimental packages.
Experimental packages reside within packages named x
, and are not stable. This means their
APIs can break at any time. The intention here is to validate these APIs and iterate on them
by working closely with internal customers. Once stable, their contents will be moved out of
the containing x
package and their APIs will be locked.
# Packages
No description provided by the author
No description provided by the author
Package peer contains components for managing peers.
No description provided by the author
No description provided by the author
Package transport implements the low level concerns of sending and receiving bytes.
Package x contains experimental components.
Package yarpcconfig implements a generic configuration system that may be used to build YARPC Dispatchers from configurations specified in different markup formats.
No description provided by the author
Package yarpcproto is a generated protocol buffer package.
Package yarpctest provides utilities to test YARPC services and clients.
# Functions
CallFromContext retrieves information about the current incoming request from the given context.
CanonicalizeHeaderKey canonicalizes the given header key to the same form used by the headers map returned by ResponseHeaders.
InjectClients injects clients from a Dispatcher into the given struct.
IsBadRequestError returns true on an error returned by RPC clients if the request was rejected by YARPC because it was invalid.
IsTimeoutError returns true on an error returned by RPC clients if the given error is a TimeoutError.
IsUnexpectedError returns true on an error returned by RPC clients if the server panicked or failed with an unhandled error.
NewDispatcher builds a new Dispatcher using the specified Config.
NewMapRouter builds a new MapRouter that uses the given name as the default service name.
OnewayInboundMiddleware combines the given collection of unary inbound middleware in-order into a single OnewayInbound middleware.
OnewayOutboundMiddleware combines the given collection of unary outbound middleware in-order into a single OnewayOutbound middleware.
RegisterClientBuilder registers a builder function for a specific client type.
ResponseHeaders specifies that headers received in response to this request should replace the given map.
StreamInboundMiddleware combines the given collection of unary inbound middleware in-order into a single StreamInbound middleware.
StreamOutboundMiddleware combines the given collection of unary outbound middleware in-order into a single StreamOutbound middleware.
UnaryInboundMiddleware combines the given collection of unary inbound middleware in-order into a single UnaryInbound middleware.
UnaryOutboundMiddleware combines the given collection of unary outbound middleware in-order into a single UnaryOutbound middleware.
WithHeader adds a new header to the request.
WithRoutingDelegate sets the routing delegate for the request.
WithRoutingKey sets the routing key for the request.
WithShardKey sets the shard key for the request.
# Constants
Version is the current version of YARPC.
# Variables
OpentracingTags are tags with YARPC metadata.
PackageVersions is a list of packages with corresponding versions.
# Structs
Config specifies the parameters of a new Dispatcher constructed via NewDispatcher.
Dispatcher encapsulates a YARPC application.
InboundMiddleware contains the different types of inbound middlewares.
LoggingConfig describes how logging should be configured.
MapRouter is a Router that maintains a map of the registered procedures.
MetricsConfig describes how telemetry should be configured.
OutboundMiddleware contains the different types of outbound middlewares.
# Interfaces
Ack represents an acknowledgement from a oneway request.
ClientConfig builds transport.ClientConfigs which specify the means of making a request from this service to another service by name.
# Type aliases
Call provides information about the current request inside handlers.
CallOption defines options that may be passed in at call sites to other services.
Inbounds contains a list of inbound transports.
Outbounds provides access to outbounds for a remote service.
RouterMiddleware wraps the Router middleware.
StreamOption defines options that may be passed in at streaming function call sites.