Adds outline of go-micro Tunnel interface
This commit is contained in:
		
							
								
								
									
										63
									
								
								tunnel/options.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								tunnel/options.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,63 @@ | |||||||
|  | package tunnel | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"github.com/google/uuid" | ||||||
|  | 	"github.com/micro/go-micro/transport" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | var ( | ||||||
|  | 	// DefaultAddress is default tunnel bind address | ||||||
|  | 	DefaultAddress = ":9096" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | type Option func(*Options) | ||||||
|  |  | ||||||
|  | // Options provides network configuration options | ||||||
|  | type Options struct { | ||||||
|  | 	// Id is tunnel id | ||||||
|  | 	Id string | ||||||
|  | 	// Address is tunnel address | ||||||
|  | 	Address string | ||||||
|  | 	// Nodes are remote nodes | ||||||
|  | 	Nodes []string | ||||||
|  | 	// Transport listens to incoming connections | ||||||
|  | 	Transport transport.Transport | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // The tunnel id | ||||||
|  | func Id(id string) Option { | ||||||
|  | 	return func(o *Options) { | ||||||
|  | 		o.Id = id | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // The tunnel address | ||||||
|  | func Address(a string) Option { | ||||||
|  | 	return func(o *Options) { | ||||||
|  | 		o.Address = a | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Nodes specify remote network nodes | ||||||
|  | func Nodes(n []string) Option { | ||||||
|  | 	return func(o *Options) { | ||||||
|  | 		o.Nodes = n | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Transport listens for incoming connections | ||||||
|  | func Transport(t transport.Transport) Option { | ||||||
|  | 	return func(o *Options) { | ||||||
|  | 		o.Transport = t | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // DefaultOptions returns router default options | ||||||
|  | func DefaultOptions() Options { | ||||||
|  | 	return Options{ | ||||||
|  | 		Id:        uuid.New().String(), | ||||||
|  | 		Address:   DefaultAddress, | ||||||
|  | 		Nodes:     make([]string, 0), | ||||||
|  | 		Transport: transport.DefaultTransport, | ||||||
|  | 	} | ||||||
|  | } | ||||||
							
								
								
									
										15
									
								
								tunnel/tunnel.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								tunnel/tunnel.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  | // Package tunnel provides micro network tunnelling | ||||||
|  | package tunnel | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"github.com/micro/go-micro/transport" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | // Tunnel creates a p2p network tunnel. | ||||||
|  | type Tunnel interface { | ||||||
|  | 	transport.Transport | ||||||
|  | 	// Connect connects the tunnel | ||||||
|  | 	Connect() error | ||||||
|  | 	// Close closes the tunnel | ||||||
|  | 	Close() error | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user