59 lines
1.1 KiB
Go
59 lines
1.1 KiB
Go
|
package router
|
||
|
|
||
|
import "errors"
|
||
|
|
||
|
var (
|
||
|
// ErrRouteNotFound is returned when no rout was found
|
||
|
ErrRouteNotFound = errors.New("route not found")
|
||
|
)
|
||
|
|
||
|
// Entry is micro network routing table entry
|
||
|
type Entry struct {
|
||
|
// NetID is micro network ID
|
||
|
NetID string
|
||
|
// Hop is the next route hop
|
||
|
Hop Router
|
||
|
// Metric is route cost metric
|
||
|
Metric int
|
||
|
}
|
||
|
|
||
|
// Table is routing table
|
||
|
// It maps service name to routes
|
||
|
type Table struct {
|
||
|
// m stores routing table map
|
||
|
m map[string][]Entry
|
||
|
}
|
||
|
|
||
|
// NewTable creates new routing table and returns it
|
||
|
func NewTable() *Table {
|
||
|
return &Table{
|
||
|
m: make(map[string][]Entry),
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// TODO: Define lookup query interface
|
||
|
// Lookup looks up entry in the routing table
|
||
|
func (t *Table) Lookup() (*Entry, error) {
|
||
|
return nil, nil
|
||
|
}
|
||
|
|
||
|
// Remove removes entry from the routing table
|
||
|
func (t *Table) Remove(e *Entry) error {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// Update updates routin entry
|
||
|
func (t *Table) Update(e *Entry) error {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// Size returns the size of the routing table
|
||
|
func (t *Table) Size() int {
|
||
|
return 0
|
||
|
}
|
||
|
|
||
|
// String returns text representation of routing table
|
||
|
func (t *Table) String() string {
|
||
|
return ""
|
||
|
}
|