Added Router Status which allows to track router status
This commit is contained in:
		| @@ -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) | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user