72 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Package static provides a static resolver which returns the name/ip passed in without any change
 | |
| package static
 | |
| 
 | |
| import (
 | |
| 	"net"
 | |
| 	"strconv"
 | |
| 
 | |
| 	"github.com/micro/go-micro/client/selector"
 | |
| 	"github.com/micro/go-micro/registry"
 | |
| )
 | |
| 
 | |
| // staticSelector is a static selector
 | |
| type staticSelector struct {
 | |
| 	opts selector.Options
 | |
| }
 | |
| 
 | |
| func (s *staticSelector) Init(opts ...selector.Option) error {
 | |
| 	for _, o := range opts {
 | |
| 		o(&s.opts)
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (s *staticSelector) Options() selector.Options {
 | |
| 	return s.opts
 | |
| }
 | |
| 
 | |
| func (s *staticSelector) Select(service string, opts ...selector.SelectOption) (selector.Next, error) {
 | |
| 	var port int
 | |
| 	addr, pt, err := net.SplitHostPort(service)
 | |
| 	if err != nil {
 | |
| 		addr = service
 | |
| 		port = 0
 | |
| 	} else {
 | |
| 		port, _ = strconv.Atoi(pt)
 | |
| 	}
 | |
| 
 | |
| 	return func() (*registry.Node, error) {
 | |
| 		return ®istry.Node{
 | |
| 			Id:      service,
 | |
| 			Address: addr,
 | |
| 			Port:    port,
 | |
| 		}, nil
 | |
| 	}, nil
 | |
| }
 | |
| 
 | |
| func (s *staticSelector) Mark(service string, node *registry.Node, err error) {
 | |
| 	return
 | |
| }
 | |
| 
 | |
| func (s *staticSelector) Reset(service string) {
 | |
| 	return
 | |
| }
 | |
| 
 | |
| func (s *staticSelector) Close() error {
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (s *staticSelector) String() string {
 | |
| 	return "static"
 | |
| }
 | |
| 
 | |
| func NewSelector(opts ...selector.Option) selector.Selector {
 | |
| 	var options selector.Options
 | |
| 	for _, o := range opts {
 | |
| 		o(&options)
 | |
| 	}
 | |
| 	return &staticSelector{
 | |
| 		opts: options,
 | |
| 	}
 | |
| }
 |