46 lines
		
	
	
		
			849 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			849 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Package monitor monitors service health
 | |
| package monitor
 | |
| 
 | |
| import (
 | |
| 	"errors"
 | |
| )
 | |
| 
 | |
| const (
 | |
| 	StatusUnknown StatusCode = iota
 | |
| 	StatusRunning
 | |
| 	StatusFailed
 | |
| )
 | |
| 
 | |
| type StatusCode int
 | |
| 
 | |
| // Monitor monitors a service and reaps dead instances
 | |
| type Monitor interface {
 | |
| 	// Reap a service and stop monitoring
 | |
| 	Reap(service string) error
 | |
| 	// Check the status of the service now
 | |
| 	Check(service string) error
 | |
| 	// Status of the service
 | |
| 	Status(service string) (Status, error)
 | |
| 	// Watch starts watching the service
 | |
| 	Watch(service string) error
 | |
| 	// Run the monitor to watch all services
 | |
| 	Run() error
 | |
| 	// Stop monitoring
 | |
| 	Stop() error
 | |
| }
 | |
| 
 | |
| type Status struct {
 | |
| 	Code  StatusCode
 | |
| 	Info  string
 | |
| 	Error string
 | |
| }
 | |
| 
 | |
| var (
 | |
| 	ErrNotWatching = errors.New("not watching")
 | |
| )
 | |
| 
 | |
| // NewMonitor returns a new monitor
 | |
| func NewMonitor(opts ...Option) Monitor {
 | |
| 	return newMonitor(opts...)
 | |
| }
 |