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 }