Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ClientFactory ¶
type ClientFactory interface { GetLocalClient() interface{} MakeRemoteClient(client thrift.TChanClient) interface{} }
A ClientFactory is able to provide an implementation of a TChan[Service] interface that can dispatch calls to the actual implementation. This could be both a local or a remote implementation of the interface based on the dest provided
type ClientResult ¶ added in v0.8.5
ClientResult is a struct that contains a reference to the actual callable client and a bool indicating whether or not that client is local or remote.
type Router ¶
type Router interface { // GetClient provides the caller with a client for a given key. At the same // time it will inform the caller if the client is a remote client or a // local client via the isRemote return value. GetClient(key string) (client interface{}, isRemote bool, err error) // GetNClients provides the caller with an ordered slice of clients for a // given key. Each result is a struct with a reference to the actual client // and a bool indicating whether or not that client is a remote client or a // local client. GetNClients(key string, n int) (clients []ClientResult, err error) }
A Router creates instances of TChannel Thrift Clients via the help of the ClientFactory
func New ¶
func New(rp ringpop.Interface, f ClientFactory, ch *tchannel.Channel) Router
New creates an instance that validates the Router interface. A Router will be used to get implementations of service interfaces that implement a distributed microservice.