39 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package table
 | 
						|
 | 
						|
import (
 | 
						|
	"errors"
 | 
						|
)
 | 
						|
 | 
						|
var (
 | 
						|
	// ErrRouteNotFound is returned when no route was found in the routing table
 | 
						|
	ErrRouteNotFound = errors.New("route not found")
 | 
						|
	// ErrDuplicateRoute is returned when the route already exists
 | 
						|
	ErrDuplicateRoute = errors.New("duplicate route")
 | 
						|
)
 | 
						|
 | 
						|
// Table defines routing table interface
 | 
						|
type Table interface {
 | 
						|
	// Create new route in the routing table
 | 
						|
	Create(Route) error
 | 
						|
	// Delete deletes existing route from the routing table
 | 
						|
	Delete(Route) error
 | 
						|
	// Update updates route in the routing table
 | 
						|
	Update(Route) error
 | 
						|
	// List returns the list of all routes in the table
 | 
						|
	List() ([]Route, error)
 | 
						|
	// Lookup looks up routes in the routing table and returns them
 | 
						|
	Lookup(Query) ([]Route, error)
 | 
						|
	// Watch returns a watcher which allows to track updates to the routing table
 | 
						|
	Watch(opts ...WatchOption) (Watcher, error)
 | 
						|
	// Size returns the size of the routing table
 | 
						|
	Size() int
 | 
						|
}
 | 
						|
 | 
						|
// TableOption used by the routing table
 | 
						|
type TableOption func(*TableOptions)
 | 
						|
 | 
						|
// NewTable creates new routing table and returns it
 | 
						|
func NewTable(opts ...TableOption) Table {
 | 
						|
	return newTable(opts...)
 | 
						|
}
 |