Added Router Status which allows to track router status

This commit is contained in:
Milos Gajdos
2019-06-28 18:35:53 +01:00
parent 8ad2f73ad6
commit 32300eadc1
2 changed files with 65 additions and 18 deletions

View File

@@ -26,6 +26,8 @@ type Router interface {
Advertise() (<-chan *Update, error)
// Update updates the routing table
Update(*Update) error
// Status returns router status
Status() Status
// Stop stops the router
Stop() error
// String returns debug info
@@ -34,7 +36,7 @@ type Router interface {
// Update is sent by the router to the network
type Update struct {
// ID is the source router ID
// ID is the router ID
ID string
// Timestamp marks the time when update is sent
Timestamp time.Time
@@ -42,6 +44,40 @@ type Update struct {
Event *Event
}
// StatusCode defines router status
type StatusCode int
// Status is router status
type Status struct {
// Error is router error
Error error
// Code defines router status
Code StatusCode
}
const (
// Running means the rotuer is running
Running StatusCode = iota
// Error means the router has crashed with error
Error
// Stopped means the router has stopped
Stopped
)
// String returns human readable status code
func (sc StatusCode) String() string {
switch sc {
case Running:
return "RUNNING"
case Error:
return "ERROR"
case Stopped:
return "STOPPED"
default:
return "UNKNOWN"
}
}
// Option used by the router
type Option func(*Options)