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: &registry.Resolver{},
   110  	}
   111  }