package relay

import "github.com/uber/tchannel-go/relay"

Package relay contains relaying interfaces for external use.

These interfaces are currently unstable, and aren't covered by the API backwards-compatibility guarantee.

Index

Types

type CallFrame

type CallFrame interface {
	// Caller is the name of the originating service.
	Caller() []byte
	// Service is the name of the destination service.
	Service() []byte
	// Method is the name of the method being called.
	Method() []byte
}

CallFrame is an interface that abstracts access to the call req frame.

type CallStats

type CallStats interface {
	// SetPeer is called once a peer has been selected for this call.
	// Note: This may not be called if a call fails before peer selection.
	SetPeer(Peer)

	// The call succeeded (possibly after retrying).
	Succeeded()
	// The RPC failed.
	Failed(reason string)
	// End stats collection for this RPC. Will be called exactly once.
	End()
}

CallStats is a reporter for per-request stats.

Because call res frames don't include the OK bit, we can't wait until the last frame of a relayed RPC to decide whether or not the RPC succeeded. Instead, we mark the call successful or failed as we see the relevant frame, but we wait to end any timers until the last frame of the response.

type Hosts

type Hosts interface {
	// Get returns the peer to forward the given call to.
	// If a SystemError is returned, the error is forwarded. Otherwise
	// a Declined error is returned to the caller.
	Get(CallFrame) (Peer, error)
}

Hosts allows external wrappers to inject peer selection logic for relaying.

type Peer

type Peer struct {
	// HostPort of the peer that was selected.
	HostPort string

	// Pool allows the peer selection to specify a pool that this Peer belongs
	// to, which may be useful when reporting stats.
	Pool string

	// Zone allows the peer selection to specify the zone that this Peer belongs
	// to, which is also useful for stats.
	Zone string
}

Peer represents the destination selected for a call.

type Stats

type Stats interface {
	Begin(CallFrame) CallStats
}

Stats is a CallStats factory.

func NewNoopStats

func NewNoopStats() Stats

NewNoopStats returns a no-op implementation of Stats.

Source Files

noop.go relay.go

Directories

PathSynopsis
relay/relaytest
Version
v1.0.8
Published
Jul 16, 2016
Platform
js/wasm
Last checked
14 hours ago

Tools for package owners.