Added outline of router/service package.
This commit is contained in:
		| @@ -8,6 +8,8 @@ import ( | |||||||
| var ( | var ( | ||||||
| 	// DefaultRouter is default network router | 	// DefaultRouter is default network router | ||||||
| 	DefaultRouter = NewRouter() | 	DefaultRouter = NewRouter() | ||||||
|  | 	// DefaultName is default router service name | ||||||
|  | 	DefaultName = "go.micro.router" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| // Router is an interface for a routing control plane | // Router is an interface for a routing control plane | ||||||
|   | |||||||
							
								
								
									
										113
									
								
								network/router/service/service.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										113
									
								
								network/router/service/service.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,113 @@ | |||||||
|  | package service | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"sync" | ||||||
|  |  | ||||||
|  | 	"github.com/micro/go-micro/client" | ||||||
|  | 	"github.com/micro/go-micro/network/router" | ||||||
|  | 	pb "github.com/micro/go-micro/network/router/proto" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | type svc struct { | ||||||
|  | 	router pb.RouterService | ||||||
|  | 	opts   router.Options | ||||||
|  | 	status router.Status | ||||||
|  | 	sync.RWMutex | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // NewRouter creates new service router and returns it | ||||||
|  | func NewRouter(opts ...router.Option) router.Router { | ||||||
|  | 	// get default options | ||||||
|  | 	options := router.DefaultOptions() | ||||||
|  |  | ||||||
|  | 	// apply requested options | ||||||
|  | 	for _, o := range opts { | ||||||
|  | 		o(&options) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	// NOTE: might need some client opts here | ||||||
|  | 	client := client.DefaultClient | ||||||
|  |  | ||||||
|  | 	// NOTE: should we have Client/Service option in router.Options? | ||||||
|  | 	s := &svc{ | ||||||
|  | 		opts:   options, | ||||||
|  | 		status: router.Status{Code: router.Stopped, Error: nil}, | ||||||
|  | 		router: pb.NewRouterService(router.DefaultName, client), | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return s | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Init initializes router with given options | ||||||
|  | func (s *svc) Init(opts ...router.Option) error { | ||||||
|  | 	for _, o := range opts { | ||||||
|  | 		o(&s.opts) | ||||||
|  | 	} | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Options returns router options | ||||||
|  | func (s *svc) Options() router.Options { | ||||||
|  | 	return s.opts | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Advertise advertises routes to the network | ||||||
|  | func (s *svc) Advertise() (<-chan *router.Advert, error) { | ||||||
|  | 	return nil, nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Process processes incoming adverts | ||||||
|  | func (s *svc) Process(a *router.Advert) error { | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Create new route in the routing table | ||||||
|  | func (s *svc) Create(r router.Route) error { | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Delete deletes existing route from the routing table | ||||||
|  | func (s *svc) Delete(r router.Route) error { | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Update updates route in the routing table | ||||||
|  | func (s *svc) Update(r router.Route) error { | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // List returns the list of all routes in the table | ||||||
|  | func (s *svc) List() ([]router.Route, error) { | ||||||
|  | 	return nil, nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Lookup looks up routes in the routing table and returns them | ||||||
|  | func (s *svc) Lookup(q router.Query) ([]router.Route, error) { | ||||||
|  | 	return nil, nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Watch returns a watcher which allows to track updates to the routing table | ||||||
|  | func (s *svc) Watch(opts ...router.WatchOption) (router.Watcher, error) { | ||||||
|  | 	return nil, nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Status returns router status | ||||||
|  | func (s *svc) Status() router.Status { | ||||||
|  | 	s.RLock() | ||||||
|  | 	defer s.RUnlock() | ||||||
|  |  | ||||||
|  | 	// make a copy of the status | ||||||
|  | 	status := s.status | ||||||
|  |  | ||||||
|  | 	return status | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Stop stops the router | ||||||
|  | func (s *svc) Stop() error { | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Returns the router implementation | ||||||
|  | func (s *svc) String() string { | ||||||
|  | 	return "service" | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user