* add many options helpers * fix noop client to allow publish messages to topic in broker * fix noop server to allow registering in registry * fix noop server to allow subscribe to topic in broker * fix new service initialization Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
		
			
				
	
	
		
			83 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package router
 | 
						|
 | 
						|
// QueryOption sets routing table query options
 | 
						|
type QueryOption func(*QueryOptions)
 | 
						|
 | 
						|
// QueryOptions are routing table query options
 | 
						|
// TODO replace with Filter(Route) bool
 | 
						|
type QueryOptions struct {
 | 
						|
	// Service is destination service name
 | 
						|
	Service string
 | 
						|
	// Address of the service
 | 
						|
	Address string
 | 
						|
	// Gateway is route gateway
 | 
						|
	Gateway string
 | 
						|
	// Network is network address
 | 
						|
	Network string
 | 
						|
	// Router is router id
 | 
						|
	Router string
 | 
						|
	// Link to query
 | 
						|
	Link string
 | 
						|
}
 | 
						|
 | 
						|
// QueryService sets service to query
 | 
						|
func QueryService(s string) QueryOption {
 | 
						|
	return func(o *QueryOptions) {
 | 
						|
		o.Service = s
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// QueryAddress sets service to query
 | 
						|
func QueryAddress(a string) QueryOption {
 | 
						|
	return func(o *QueryOptions) {
 | 
						|
		o.Address = a
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// QueryGateway sets gateway address to query
 | 
						|
func QueryGateway(g string) QueryOption {
 | 
						|
	return func(o *QueryOptions) {
 | 
						|
		o.Gateway = g
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// QueryNetwork sets network name to query
 | 
						|
func QueryNetwork(n string) QueryOption {
 | 
						|
	return func(o *QueryOptions) {
 | 
						|
		o.Network = n
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// QueryRouter sets router id to query
 | 
						|
func QueryRouter(r string) QueryOption {
 | 
						|
	return func(o *QueryOptions) {
 | 
						|
		o.Router = r
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// QueryLink sets the link to query
 | 
						|
func QueryLink(link string) QueryOption {
 | 
						|
	return func(o *QueryOptions) {
 | 
						|
		o.Link = link
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// NewQuery creates new query and returns it
 | 
						|
func NewQuery(opts ...QueryOption) QueryOptions {
 | 
						|
	// default options
 | 
						|
	options := QueryOptions{
 | 
						|
		Service: "*",
 | 
						|
		Address: "*",
 | 
						|
		Gateway: "*",
 | 
						|
		Network: "*",
 | 
						|
		Router:  "*",
 | 
						|
		Link:    DefaultLink,
 | 
						|
	}
 | 
						|
 | 
						|
	for _, o := range opts {
 | 
						|
		o(&options)
 | 
						|
	}
 | 
						|
 | 
						|
	return options
 | 
						|
}
 |