Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AddrMetadata ¶
type AddrMetadata interface { // Source indicates where the metadata comes from. Source() string }
AddrMetadta is address metadata, collected from a snapshot of address list by a router, if it implements Poolable.
type AddrPool ¶
AddrPool is an address pool, backed by a snapshot of address list, divided into categories.
type BaseRouterRule ¶
type BaseRouterRule struct { RawRule string Runtime bool Force bool Valid bool Enabled bool Priority int Dynamic bool Scope string Key string }
BaseRouterRule
type Cache ¶
type Cache interface { // GetInvokers returns the snapshot of received invokers. GetInvokers() []protocol.Invoker // FindAddrPool returns address pool associated with the given Poolable instance. FindAddrPool(Poolable) AddrPool // FindAddrMeta returns address metadata associated with the given Poolable instance. FindAddrMeta(Poolable) AddrMetadata }
Cache caches all addresses relevant info for a snapshot of received invokers. It keeps a snapshot of the received address list, and also keeps address pools and address metadata from routers based on the same address snapshot, if the router implements Poolable.
type Chain ¶
type Chain interface { Route(*common.URL, protocol.Invocation) []protocol.Invoker // Refresh invokers SetInvokers([]protocol.Invoker) // AddRouters Add routers AddRouters([]PriorityRouter) // GetNotifyChan get notify channel of this chain GetNotifyChan() chan struct{} }
Chain
type Poolable ¶
type Poolable interface { // Pool created address pool and address metadata from the invokers. Pool([]protocol.Invoker) (AddrPool, AddrMetadata) // ShouldPool returns if it should pool. One typical scenario is a router rule changes, in this case, a pooling // is necessary, even if the addresses not changed at all. ShouldPool() bool // Name return the Poolable's name. Name() string }
Poolable caches address pool and address metadata for a router instance which will be used later in Router's Route.
type PriorityRouter ¶
type PriorityRouter interface { // Priority Return Priority in router // 0 to ^int(0) is better Priority() int64 // contains filtered or unexported methods }
Router
type PriorityRouterFactory ¶
type PriorityRouterFactory interface { // NewPriorityRouter creates router instance with URL NewPriorityRouter([]byte, []byte, chan struct{}) (PriorityRouter, error) }
Extension - Router PriorityRouterFactory creates creates priority router with url