102 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package network
 | |
| 
 | |
| import (
 | |
| 	"github.com/asim/go-micro/v3/network/tunnel"
 | |
| 	tmucp "github.com/asim/go-micro/v3/network/tunnel/mucp"
 | |
| 	"github.com/asim/go-micro/v3/proxy"
 | |
| 	"github.com/asim/go-micro/v3/proxy/mucp"
 | |
| 	"github.com/asim/go-micro/v3/router"
 | |
| 	regRouter "github.com/asim/go-micro/v3/router/registry"
 | |
| 	"github.com/google/uuid"
 | |
| )
 | |
| 
 | |
| type Option func(*Options)
 | |
| 
 | |
| // Options configure network
 | |
| type Options struct {
 | |
| 	// Id of the node
 | |
| 	Id string
 | |
| 	// Name of the network
 | |
| 	Name string
 | |
| 	// Address to bind to
 | |
| 	Address string
 | |
| 	// Advertise sets the address to advertise
 | |
| 	Advertise string
 | |
| 	// Nodes is a list of nodes to connect to
 | |
| 	Nodes []string
 | |
| 	// Tunnel is network tunnel
 | |
| 	Tunnel tunnel.Tunnel
 | |
| 	// Router is network router
 | |
| 	Router router.Router
 | |
| 	// Proxy is network proxy
 | |
| 	Proxy proxy.Proxy
 | |
| }
 | |
| 
 | |
| // Id sets the id of the network node
 | |
| func Id(id string) Option {
 | |
| 	return func(o *Options) {
 | |
| 		o.Id = id
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // Name sets the network name
 | |
| func Name(n string) Option {
 | |
| 	return func(o *Options) {
 | |
| 		o.Name = n
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // Address sets the network address
 | |
| func Address(a string) Option {
 | |
| 	return func(o *Options) {
 | |
| 		o.Address = a
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // Advertise sets the address to advertise
 | |
| func Advertise(a string) Option {
 | |
| 	return func(o *Options) {
 | |
| 		o.Advertise = a
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // Nodes is a list of nodes to connect to
 | |
| func Nodes(n ...string) Option {
 | |
| 	return func(o *Options) {
 | |
| 		o.Nodes = n
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // Tunnel sets the network tunnel
 | |
| func Tunnel(t tunnel.Tunnel) Option {
 | |
| 	return func(o *Options) {
 | |
| 		o.Tunnel = t
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // Router sets the network router
 | |
| func Router(r router.Router) Option {
 | |
| 	return func(o *Options) {
 | |
| 		o.Router = r
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // Proxy sets the network proxy
 | |
| func Proxy(p proxy.Proxy) Option {
 | |
| 	return func(o *Options) {
 | |
| 		o.Proxy = p
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // DefaultOptions returns network default options
 | |
| func DefaultOptions() Options {
 | |
| 	return Options{
 | |
| 		Id:      uuid.New().String(),
 | |
| 		Name:    "go.micro",
 | |
| 		Address: ":0",
 | |
| 		Tunnel:  tmucp.NewTunnel(),
 | |
| 		Router:  regRouter.NewRouter(),
 | |
| 		Proxy:   mucp.NewProxy(),
 | |
| 	}
 | |
| }
 |