network

package
v0.12.4 Latest Latest
Warning

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

Go to latest
Published: Aug 21, 2020 License: Apache-2.0 Imports: 32 Imported by: 7

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DbSnapshotTooFrequentError = dbSnapshotTooFrequentError{}
View Source
var SessionEventHandlerRegistry = cowslice.NewCowSlice(make([]SessionEventHandler, 0))

Functions

This section is empty.

Types

type Cache

type Cache interface {
	RemoveFromCache(id string)
}

type Circuit

type Circuit struct {
	Path      []*Router
	Links     []*Link
	Binding   string
	IngressId string
	EgressId  string
}

func (*Circuit) CreateRouteMessages

func (circuit *Circuit) CreateRouteMessages(sessionId *identity.TokenId, egressAddress string) ([]*ctrl_pb.Route, error)

func (*Circuit) EgressRouter

func (circuit *Circuit) EgressRouter() *Router

func (*Circuit) EqualPath

func (circuit *Circuit) EqualPath(other *Circuit) bool

func (*Circuit) String

func (circuit *Circuit) String() string

type Controller

type Controller interface {
	models.EntityRetriever
	// contains filtered or unexported methods
}

type Controllers

type Controllers struct {
	Terminators *TerminatorController
	Routers     *RouterController
	Services    *ServiceController
	// contains filtered or unexported fields
}

func NewControllers

func NewControllers(db boltz.Db, stores *db.Stores) *Controllers

type InvalidSessionError

type InvalidSessionError struct {
	// contains filtered or unexported fields
}

func (InvalidSessionError) Error

func (err InvalidSessionError) Error() string
type Link struct {
	Id  *identity.TokenId
	Src *Router
	Dst *Router

	Down       bool
	Cost       int
	SrcLatency int64
	DstLatency int64
	// contains filtered or unexported fields
}

func (*Link) CurrentState

func (link *Link) CurrentState() *LinkState

type LinkMode

type LinkMode byte
const (
	Pending LinkMode = iota
	Connected
	Failed
)

func (LinkMode) String

func (t LinkMode) String() string

type LinkState

type LinkState struct {
	Mode      LinkMode
	Timestamp int64
}

type MultipleErrors

type MultipleErrors []error

func (MultipleErrors) Error

func (e MultipleErrors) Error() string

type Network

type Network struct {
	*Controllers
	// contains filtered or unexported fields
}

func NewNetwork

func NewNetwork(nodeId *identity.TokenId, options *Options, database boltz.Db, metricsCfg *metrics.Config) (*Network, error)

func (*Network) AcceptMetrics

func (network *Network) AcceptMetrics(metrics *metrics_pb.MetricsMessage)

func (*Network) AddCapability

func (network *Network) AddCapability(capability string)

func (*Network) AddRouterPresenceHandler

func (network *Network) AddRouterPresenceHandler(h RouterPresenceHandler)

func (*Network) AllConnectedRouters

func (network *Network) AllConnectedRouters() []*Router

func (*Network) CircuitUpdated added in v0.12.1

func (network *Network) CircuitUpdated(sessionId *identity.TokenId, circuit *Circuit)

func (*Network) ConnectRouter

func (network *Network) ConnectRouter(r *Router)

func (*Network) ConnectedRouter

func (network *Network) ConnectedRouter(id string) bool

func (*Network) CreateCircuit

func (network *Network) CreateCircuit(srcR, dstR *Router) (*Circuit, error)

func (*Network) CreateCircuitWithPath

func (network *Network) CreateCircuitWithPath(path []*Router) (*Circuit, error)

func (*Network) CreateRouter

func (network *Network) CreateRouter(router *Router) error

func (*Network) CreateSession

func (network *Network) CreateSession(srcR *Router, clientId *identity.TokenId, serviceId string) (*session, error)

func (*Network) Debug

func (network *Network) Debug() string

func (*Network) DisconnectRouter

func (network *Network) DisconnectRouter(r *Router)
func (network *Network) GetAllLinks() []*Link

func (*Network) GetAllLinksForRouter

func (network *Network) GetAllLinksForRouter(routerId string) []*Link

func (*Network) GetAllSessions

func (network *Network) GetAllSessions() []*session

func (*Network) GetAppId

func (network *Network) GetAppId() *identity.TokenId

func (*Network) GetCapabilities

func (network *Network) GetCapabilities() []string

func (*Network) GetConnectedRouter

func (network *Network) GetConnectedRouter(routerId string) *Router

func (*Network) GetControllers

func (network *Network) GetControllers() *Controllers

func (*Network) GetDb

func (network *Network) GetDb() boltz.Db

func (*Network) GetEventDispatcher added in v0.12.1

func (network *Network) GetEventDispatcher() event.Dispatcher
func (network *Network) GetLink(linkId *identity.TokenId) (*Link, bool)

func (*Network) GetMetricsRegistry added in v0.12.3

func (network *Network) GetMetricsRegistry() metrics.Registry

func (*Network) GetRouter

func (network *Network) GetRouter(routerId string) (*Router, error)

func (*Network) GetServiceCache

func (network *Network) GetServiceCache() Cache

func (*Network) GetSession

func (network *Network) GetSession(sessionId *identity.TokenId) (*session, bool)

func (*Network) GetStores

func (network *Network) GetStores() *db.Stores

func (*Network) GetTraceController

func (network *Network) GetTraceController() trace.Controller

func (*Network) LinkChanged

func (network *Network) LinkChanged(l *Link)

func (*Network) LinkConnected

func (network *Network) LinkConnected(id *identity.TokenId, connected bool) error

func (*Network) RemoveSession

func (network *Network) RemoveSession(sessionId *identity.TokenId, now bool) error

func (*Network) RouterChanged

func (network *Network) RouterChanged(r *Router)

func (*Network) Run

func (network *Network) Run()

func (*Network) SessionCreated added in v0.12.1

func (network *Network) SessionCreated(sessionId *identity.TokenId, clientId *identity.TokenId, serviceId string, circuit *Circuit)

func (*Network) SessionDeleted added in v0.12.1

func (network *Network) SessionDeleted(sessionId *identity.TokenId)

func (*Network) Shutdown

func (network *Network) Shutdown()

func (*Network) SnapshotDatabase added in v0.11.40

func (network *Network) SnapshotDatabase() error

func (*Network) UpdateCircuit

func (network *Network) UpdateCircuit(circuit *Circuit) (*Circuit, error)

func (*Network) ValidateTerminators

func (network *Network) ValidateTerminators(r *Router)

type Options

type Options struct {
	CycleSeconds uint32
	Smart        struct {
		RerouteFraction float32
		RerouteCap      uint32
	}
}

func DefaultOptions

func DefaultOptions() *Options

func LoadOptions

func LoadOptions(src map[interface{}]interface{}) (*Options, error)

type PathAndCost

type PathAndCost struct {
	// contains filtered or unexported fields
}

type Router

type Router struct {
	models.BaseEntity
	Name               string
	Fingerprint        *string
	AdvertisedListener string
	Control            channel2.Channel
	CostFactor         int
	Connected          concurrenz.AtomicBoolean
}

func NewRouter

func NewRouter(id, name, fingerprint string) *Router

type RouterController

type RouterController struct {
	// contains filtered or unexported fields
}

func (*RouterController) BaseList

func (ctrl *RouterController) BaseList(query string) (*models.EntityListResult, error)

func (*RouterController) BaseLoad

func (ctrl *RouterController) BaseLoad(id string) (models.Entity, error)

func (*RouterController) BaseLoadInTx

func (ctrl *RouterController) BaseLoadInTx(tx *bbolt.Tx, id string) (models.Entity, error)

func (*RouterController) BasePreparedList

func (ctrl *RouterController) BasePreparedList(query ast.Query) (*models.EntityListResult, error)

func (*RouterController) BasePreparedListAssociated

func (ctrl *RouterController) BasePreparedListAssociated(id string, typeLoader models.EntityRetriever, query ast.Query) (*models.EntityListResult, error)

func (*RouterController) Create

func (ctrl *RouterController) Create(router *Router) error

func (*RouterController) Delete

func (ctrl *RouterController) Delete(id string) error

func (*RouterController) IsConnected

func (ctrl *RouterController) IsConnected(id string) bool

func (*RouterController) Read

func (ctrl *RouterController) Read(id string) (entity *Router, err error)

type RouterPresenceHandler

type RouterPresenceHandler interface {
	RouterConnected(r *Router)
	RouterDisconnected(r *Router)
}

type RoutingTerminator

type RoutingTerminator struct {
	RouteCost uint32
	Stats     xt.Stats
	*Terminator
}

func (*RoutingTerminator) GetPrecedence

func (r *RoutingTerminator) GetPrecedence() xt.Precedence

func (*RoutingTerminator) GetRouteCost

func (r *RoutingTerminator) GetRouteCost() uint32

func (*RoutingTerminator) GetTerminatorStats

func (r *RoutingTerminator) GetTerminatorStats() xt.Stats

type Service

type Service struct {
	models.BaseEntity
	Name               string
	TerminatorStrategy string
	Terminators        []*Terminator
}

type ServiceController

type ServiceController struct {
	// contains filtered or unexported fields
}

func (*ServiceController) BaseList

func (ctrl *ServiceController) BaseList(query string) (*models.EntityListResult, error)

func (*ServiceController) BaseLoad

func (ctrl *ServiceController) BaseLoad(id string) (models.Entity, error)

func (*ServiceController) BaseLoadInTx

func (ctrl *ServiceController) BaseLoadInTx(tx *bbolt.Tx, id string) (models.Entity, error)

func (*ServiceController) BasePreparedList

func (ctrl *ServiceController) BasePreparedList(query ast.Query) (*models.EntityListResult, error)

func (*ServiceController) BasePreparedListAssociated

func (ctrl *ServiceController) BasePreparedListAssociated(id string, typeLoader models.EntityRetriever, query ast.Query) (*models.EntityListResult, error)

func (*ServiceController) Create

func (ctrl *ServiceController) Create(s *Service) error

func (*ServiceController) Delete

func (ctrl *ServiceController) Delete(id string) error

func (*ServiceController) Read

func (ctrl *ServiceController) Read(id string) (entity *Service, err error)

func (*ServiceController) RemoveFromCache

func (ctrl *ServiceController) RemoveFromCache(id string)

func (*ServiceController) Update

func (ctrl *ServiceController) Update(s *Service) error

type SessionEventHandler added in v0.12.1

type SessionEventHandler interface {
	SessionCreated(sessionId *identity.TokenId, clientId *identity.TokenId, serviceId string, circuit *Circuit)
	SessionDeleted(sessionId *identity.TokenId)
	CircuitUpdated(sessionId *identity.TokenId, circuit *Circuit)
}

type Terminator

type Terminator struct {
	models.BaseEntity
	Service  string
	Router   string
	Binding  string
	Address  string
	Cost     uint16
	PeerData map[uint32][]byte
}

func (*Terminator) GetAddress

func (entity *Terminator) GetAddress() string

func (*Terminator) GetBinding

func (entity *Terminator) GetBinding() string

func (*Terminator) GetCost

func (entity *Terminator) GetCost() uint16

func (*Terminator) GetPeerData

func (entity *Terminator) GetPeerData() xt.PeerData

func (*Terminator) GetRouterId

func (entity *Terminator) GetRouterId() string

func (*Terminator) GetServiceId

func (entity *Terminator) GetServiceId() string

type TerminatorController

type TerminatorController struct {
	// contains filtered or unexported fields
}

func (*TerminatorController) BaseList

func (ctrl *TerminatorController) BaseList(query string) (*models.EntityListResult, error)

func (*TerminatorController) BaseLoad

func (ctrl *TerminatorController) BaseLoad(id string) (models.Entity, error)

func (*TerminatorController) BaseLoadInTx

func (ctrl *TerminatorController) BaseLoadInTx(tx *bbolt.Tx, id string) (models.Entity, error)

func (*TerminatorController) BasePreparedList

func (ctrl *TerminatorController) BasePreparedList(query ast.Query) (*models.EntityListResult, error)

func (*TerminatorController) BasePreparedListAssociated

func (ctrl *TerminatorController) BasePreparedListAssociated(id string, typeLoader models.EntityRetriever, query ast.Query) (*models.EntityListResult, error)

func (*TerminatorController) Create

func (ctrl *TerminatorController) Create(s *Terminator) (string, error)

func (*TerminatorController) Delete

func (ctrl *TerminatorController) Delete(id string) error

func (*TerminatorController) Patch

func (ctrl *TerminatorController) Patch(terminator *Terminator, checker boltz.FieldChecker) error

func (*TerminatorController) Query

func (ctrl *TerminatorController) Query(query string) (*TerminatorListResult, error)

func (*TerminatorController) Read

func (ctrl *TerminatorController) Read(id string) (entity *Terminator, err error)

func (*TerminatorController) Update

func (ctrl *TerminatorController) Update(terminator *Terminator) error

type TerminatorListResult

type TerminatorListResult struct {
	Entities []*Terminator
	models.QueryMetaData
	// contains filtered or unexported fields
}

Jump to

Keyboard shortcuts

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