gitee.com/liuxuezhan/go-micro-v1.18.0@v1.0.0/router/query.go (about)

     1  package router
     2  
     3  // QueryOption sets routing table query options
     4  type QueryOption func(*QueryOptions)
     5  
     6  // QueryOptions are routing table query options
     7  type QueryOptions struct {
     8  	// Service is destination service name
     9  	Service string
    10  	// Address of the service
    11  	Address string
    12  	// Gateway is route gateway
    13  	Gateway string
    14  	// Network is network address
    15  	Network string
    16  	// Router is router id
    17  	Router string
    18  }
    19  
    20  // QueryService sets service to query
    21  func QueryService(s string) QueryOption {
    22  	return func(o *QueryOptions) {
    23  		o.Service = s
    24  	}
    25  }
    26  
    27  // QueryAddress sets service to query
    28  func QueryAddress(a string) QueryOption {
    29  	return func(o *QueryOptions) {
    30  		o.Address = a
    31  	}
    32  }
    33  
    34  // QueryGateway sets gateway address to query
    35  func QueryGateway(g string) QueryOption {
    36  	return func(o *QueryOptions) {
    37  		o.Gateway = g
    38  	}
    39  }
    40  
    41  // QueryNetwork sets network name to query
    42  func QueryNetwork(n string) QueryOption {
    43  	return func(o *QueryOptions) {
    44  		o.Network = n
    45  	}
    46  }
    47  
    48  // QueryRouter sets router id to query
    49  func QueryRouter(r string) QueryOption {
    50  	return func(o *QueryOptions) {
    51  		o.Router = r
    52  	}
    53  }
    54  
    55  // NewQuery creates new query and returns it
    56  func NewQuery(opts ...QueryOption) QueryOptions {
    57  	// default options
    58  	qopts := QueryOptions{
    59  		Service: "*",
    60  		Address: "*",
    61  		Gateway: "*",
    62  		Network: "*",
    63  		Router:  "*",
    64  	}
    65  
    66  	for _, o := range opts {
    67  		o(&qopts)
    68  	}
    69  
    70  	return qopts
    71  }