router: update interface (#1732)
* router: replace Start and Stop with Close * router: update default network to micro * router: update tests
This commit is contained in:
@@ -45,15 +45,25 @@ func newRouter(opts ...Option) Router {
|
||||
o(&options)
|
||||
}
|
||||
|
||||
return &router{
|
||||
// construct the router
|
||||
r := &router{
|
||||
options: options,
|
||||
table: newTable(),
|
||||
subscribers: make(map[string]chan *Advert),
|
||||
}
|
||||
|
||||
// start the router and return
|
||||
r.start()
|
||||
return r
|
||||
}
|
||||
|
||||
// Init initializes router with given options
|
||||
func (r *router) Init(opts ...Option) error {
|
||||
// stop the router before we initialize
|
||||
if err := r.Close(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
r.Lock()
|
||||
defer r.Unlock()
|
||||
|
||||
@@ -61,6 +71,11 @@ func (r *router) Init(opts ...Option) error {
|
||||
o(&r.options)
|
||||
}
|
||||
|
||||
// restart the router
|
||||
if err := r.start(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -399,11 +414,8 @@ func (r *router) drain() {
|
||||
}
|
||||
}
|
||||
|
||||
// Start starts the router
|
||||
func (r *router) Start() error {
|
||||
r.Lock()
|
||||
defer r.Unlock()
|
||||
|
||||
// start the router. Should be called under lock.
|
||||
func (r *router) start() error {
|
||||
if r.running {
|
||||
return nil
|
||||
}
|
||||
@@ -615,8 +627,8 @@ func (r *router) Watch(opts ...WatchOption) (Watcher, error) {
|
||||
return r.table.Watch(opts...)
|
||||
}
|
||||
|
||||
// Stop stops the router
|
||||
func (r *router) Stop() error {
|
||||
// Close the router
|
||||
func (r *router) Close() error {
|
||||
r.Lock()
|
||||
defer r.Unlock()
|
||||
|
||||
|
@@ -15,19 +15,15 @@ func routerTestSetup() Router {
|
||||
return newRouter(Registry(r))
|
||||
}
|
||||
|
||||
func TestRouterStartStop(t *testing.T) {
|
||||
func TestRouterClose(t *testing.T) {
|
||||
r := routerTestSetup()
|
||||
|
||||
if err := r.Start(); err != nil {
|
||||
t.Errorf("failed to start router: %v", err)
|
||||
}
|
||||
|
||||
_, err := r.Advertise()
|
||||
if err != nil {
|
||||
t.Errorf("failed to start advertising: %v", err)
|
||||
}
|
||||
|
||||
if err := r.Stop(); err != nil {
|
||||
if err := r.Close(); err != nil {
|
||||
t.Errorf("failed to stop router: %v", err)
|
||||
}
|
||||
if len(os.Getenv("IN_TRAVIS_CI")) == 0 {
|
||||
@@ -41,10 +37,6 @@ func TestRouterAdvertise(t *testing.T) {
|
||||
// lower the advertise interval
|
||||
AdvertiseEventsTick = 500 * time.Millisecond
|
||||
|
||||
if err := r.Start(); err != nil {
|
||||
t.Errorf("failed to start router: %v", err)
|
||||
}
|
||||
|
||||
ch, err := r.Advertise()
|
||||
if err != nil {
|
||||
t.Errorf("failed to start advertising: %v", err)
|
||||
@@ -134,7 +126,7 @@ func TestRouterAdvertise(t *testing.T) {
|
||||
|
||||
wg.Wait()
|
||||
|
||||
if err := r.Stop(); err != nil {
|
||||
if err := r.Close(); err != nil {
|
||||
t.Errorf("failed to stop router: %v", err)
|
||||
}
|
||||
}
|
||||
|
@@ -11,7 +11,7 @@ var (
|
||||
// DefaultName is default router service name
|
||||
DefaultName = "go.micro.router"
|
||||
// DefaultNetwork is default micro network
|
||||
DefaultNetwork = "go.micro"
|
||||
DefaultNetwork = "micro"
|
||||
// DefaultRouter is default network router
|
||||
DefaultRouter = NewRouter()
|
||||
)
|
||||
@@ -32,10 +32,8 @@ type Router interface {
|
||||
Lookup(...QueryOption) ([]Route, error)
|
||||
// Watch returns a watcher which tracks updates to the routing table
|
||||
Watch(opts ...WatchOption) (Watcher, error)
|
||||
// Start starts the router
|
||||
Start() error
|
||||
// Stop stops the router
|
||||
Stop() error
|
||||
// Close the router
|
||||
Close() error
|
||||
// Returns the router implementation
|
||||
String() string
|
||||
}
|
||||
|
@@ -85,13 +85,6 @@ func (s *svc) Table() router.Table {
|
||||
return s.table
|
||||
}
|
||||
|
||||
// Start starts the service
|
||||
func (s *svc) Start() error {
|
||||
s.Lock()
|
||||
defer s.Unlock()
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *svc) advertiseEvents(advertChan chan *router.Advert, stream pb.Router_AdvertiseService) error {
|
||||
go func() {
|
||||
<-s.exit
|
||||
@@ -202,8 +195,8 @@ func (s *svc) Process(advert *router.Advert) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Remote router cannot be stopped
|
||||
func (s *svc) Stop() error {
|
||||
// Remote router cannot be closed
|
||||
func (s *svc) Close() error {
|
||||
s.Lock()
|
||||
defer s.Unlock()
|
||||
|
||||
|
Reference in New Issue
Block a user