github.com/micro/go-micro/v2@v2.9.1/network/options.go (about) 1 package network 2 3 import ( 4 "github.com/google/uuid" 5 "github.com/micro/go-micro/v2/network/resolver" 6 "github.com/micro/go-micro/v2/network/resolver/registry" 7 "github.com/micro/go-micro/v2/proxy" 8 "github.com/micro/go-micro/v2/proxy/mucp" 9 "github.com/micro/go-micro/v2/router" 10 "github.com/micro/go-micro/v2/tunnel" 11 ) 12 13 type Option func(*Options) 14 15 // Options configure network 16 type Options struct { 17 // Id of the node 18 Id string 19 // Name of the network 20 Name string 21 // Address to bind to 22 Address string 23 // Advertise sets the address to advertise 24 Advertise string 25 // Nodes is a list of nodes to connect to 26 Nodes []string 27 // Tunnel is network tunnel 28 Tunnel tunnel.Tunnel 29 // Router is network router 30 Router router.Router 31 // Proxy is network proxy 32 Proxy proxy.Proxy 33 // Resolver is network resolver 34 Resolver resolver.Resolver 35 } 36 37 // Id sets the id of the network node 38 func Id(id string) Option { 39 return func(o *Options) { 40 o.Id = id 41 } 42 } 43 44 // Name sets the network name 45 func Name(n string) Option { 46 return func(o *Options) { 47 o.Name = n 48 } 49 } 50 51 // Address sets the network address 52 func Address(a string) Option { 53 return func(o *Options) { 54 o.Address = a 55 } 56 } 57 58 // Advertise sets the address to advertise 59 func Advertise(a string) Option { 60 return func(o *Options) { 61 o.Advertise = a 62 } 63 } 64 65 // Nodes is a list of nodes to connect to 66 func Nodes(n ...string) Option { 67 return func(o *Options) { 68 o.Nodes = n 69 } 70 } 71 72 // Tunnel sets the network tunnel 73 func Tunnel(t tunnel.Tunnel) Option { 74 return func(o *Options) { 75 o.Tunnel = t 76 } 77 } 78 79 // Router sets the network router 80 func Router(r router.Router) Option { 81 return func(o *Options) { 82 o.Router = r 83 } 84 } 85 86 // Proxy sets the network proxy 87 func Proxy(p proxy.Proxy) Option { 88 return func(o *Options) { 89 o.Proxy = p 90 } 91 } 92 93 // Resolver is the network resolver 94 func Resolver(r resolver.Resolver) Option { 95 return func(o *Options) { 96 o.Resolver = r 97 } 98 } 99 100 // DefaultOptions returns network default options 101 func DefaultOptions() Options { 102 return Options{ 103 Id: uuid.New().String(), 104 Name: DefaultName, 105 Address: DefaultAddress, 106 Tunnel: tunnel.NewTunnel(), 107 Router: router.DefaultRouter, 108 Proxy: mucp.NewProxy(), 109 Resolver: ®istry.Resolver{}, 110 } 111 }