 Documentation
      ¶
      Documentation
      ¶
    
    
  
    
  
    Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( // DefaultLink is default network link DefaultLink = "local" // DefaultLocalMetric is default route cost for a local route DefaultLocalMetric int64 = 1 )
var ( // DefaultAddress is default router address DefaultAddress = ":9093" // DefaultName is default router service name DefaultName = "go.vine.router" // DefaultNetwork is default router service name DefaultNetwork = "go.vine" // DefaultRouter is default network router DefaultRouter Router )
var ( // ErrWatcherStopped is returned when routing table watcher has been stopped ErrWatcherStopped = errors.New("watcher stopped") )
Functions ¶
This section is empty.
Types ¶
type Advert ¶
type Advert struct {
	// Id is the router id
	Id string
	// Type is type of advert
	Type AdvertType
	// Timestamp marks the time when the update is send
	Timestamp time.Time
	// TTL is advert TTL
	TTL time.Duration
	// Events is a list of routing table events to advertise
	Events []*Event
}
    Advert contains a list of events advertised by the router to the network
type AdvertType ¶
type AdvertType int
AdvertType is route advertisement type
const ( // Announce is advertised when the router announces itself Announce AdvertType = iota // RouteUpdate advertise route updates RouteUpdate )
func (AdvertType) String ¶
func (t AdvertType) String() string
String returns human readable advertisement type
type Event ¶
type Event struct {
	// Unique id of the event
	Id string
	// Type defines type of event
	Type EventType
	// Timestamp is event timestamp
	Timestamp time.Time
	// Route is table route
	Route Route
}
    Event is returned by a call to Next on the watcher.
type Options ¶
type Options struct {
	// Id is router id
	Id string
	// Address is router address
	Address string
	// Gateway is network gateway
	Gateway string
	// Network is network address
	Network string
	// Registry is the local registry
	Registry registry.Registry
	// Advertise is the advertising strategy
	Advertise Strategy
	// Client for calling router
	Client client.Client
}
    Options are router options
type QueryOption ¶
type QueryOption func(*QueryOptions)
QueryOption sets routing table query options
func QueryStrategy ¶
func QueryStrategy(s Strategy) QueryOption
QueryStrategy sets strategy to query
type QueryOptions ¶
type QueryOptions struct {
	// Service is destination service name
	Service string
	// Address of the service
	Address string
	// Gateway is route gateway
	Gateway string
	// Network is network address
	Network string
	// Router is router id
	Router string
	// Strategy is routing strategy
	Strategy Strategy
}
    QueryOptions are routing table query options
func NewQuery ¶
func NewQuery(opts ...QueryOption) QueryOptions
NewQuery creates new query and returns it
type Route ¶
type Route struct {
	// Service is destination service name
	Service string
	// Address is service node address
	Address string
	// Gateway is route gateway
	Gateway string
	// Network is network address
	Network string
	// Router is router id
	Router string
	// Link is network link
	Link string
	// Metric is the route cost metric
	Metric int64
}
    Route is network route
type Router ¶
type Router interface {
	// Init initializes the router with options
	Init(...Option) error
	// Options returns the router options
	Options() Options
	// Table the routing table
	Table() Table
	// Advertise advertises routes
	Advertise() (<-chan *Advert, error)
	// Process process incoming adverts
	Process(*Advert) error
	// Lookup queries routes in the routing table
	Lookup(...QueryOption) ([]Route, error)
	// Watch returns a watcher which traces updates to the routing table
	Watch(opts ...WatchOption) (Watcher, error)
	// Start starts the router
	Start() error
	// Stop stops the router
	Stop() error
	// String returns the router implementation
	String() string
}
    Router is an interface for a routing control plane
type StatusCode ¶
type StatusCode int
StatusCode defines router status
const ( // Running means the router is up and running Running StatusCode = iota // Advertising meas the router is advertising Advertising // Stopped means the router has been stopped Stopped // Error means the router has encountered error Error )
type Table ¶
type Table interface {
	// Create new route in the routing table
	Create(Route) error
	// Delete existing route from the routing table
	Delete(Route) error
	// Update route in the routing table
	Update(Route) error
	// List all routes in the table
	List() ([]Route, error)
	// Query routes in the routing table
	Query(...QueryOption) ([]Route, error)
}
    Table is an interface for routing table
type WatchOption ¶
type WatchOption func(*WatchOptions)
WatchOption is used to define what routes to watch in the table
func WatchService ¶
func WatchService(s string) WatchOption
WatchService sets watch service routes to watch Service is the vine service name
type WatchOptions ¶
type WatchOptions struct {
	// Service allows to watch specific service routes
	Service string
}
    WatchOptions are table watcher options