router

package
v3.0.0-rc1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 15, 2021 License: Apache-2.0 Imports: 3 Imported by: 4

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

type AddrPool map[string]*roaring.Bitmap

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

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL