Some network inspiration
This commit is contained in:
		
							
								
								
									
										45
									
								
								network/default.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								network/default.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,45 @@ | |||||||
|  | package network | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"github.com/micro/go-micro/client" | ||||||
|  | 	"github.com/micro/go-micro/server" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | type network struct { | ||||||
|  | 	name    string | ||||||
|  | 	options Options | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func (n *network) Name() string { | ||||||
|  | 	return n.name | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func (n *network) Connect() error { | ||||||
|  | 	return n.options.Server.Start() | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func (n *network) Close() error { | ||||||
|  | 	return n.options.Server.Stop() | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // NewNetwork returns a new network node | ||||||
|  | func NewNetwork(opts ...Option) Network { | ||||||
|  | 	options := Options{ | ||||||
|  | 		Name:   DefaultName, | ||||||
|  | 		Client: client.DefaultClient, | ||||||
|  | 		Server: server.DefaultServer, | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	for _, o := range opts { | ||||||
|  | 		o(&options) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	// set the server name | ||||||
|  | 	options.Server.Init( | ||||||
|  | 		server.Name(options.Name), | ||||||
|  | 	) | ||||||
|  |  | ||||||
|  | 	return &network{ | ||||||
|  | 		options: options, | ||||||
|  | 	} | ||||||
|  | } | ||||||
							
								
								
									
										18
									
								
								network/network.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								network/network.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | |||||||
|  | // Package network is for building peer to peer networks | ||||||
|  | package network | ||||||
|  |  | ||||||
|  | // Network is a | ||||||
|  | type Network interface { | ||||||
|  | 	// Name of the network | ||||||
|  | 	Name() string | ||||||
|  | 	// Connect starts the network node | ||||||
|  | 	Connect() error | ||||||
|  | 	// Close shutsdown the network node | ||||||
|  | 	Close() error | ||||||
|  | } | ||||||
|  |  | ||||||
|  | var ( | ||||||
|  | 	DefaultName = "go.micro.network" | ||||||
|  |  | ||||||
|  | 	DefaultNetwork = NewNetwork() | ||||||
|  | ) | ||||||
							
								
								
									
										35
									
								
								network/options.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								network/options.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,35 @@ | |||||||
|  | package network | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"github.com/micro/go-micro/client" | ||||||
|  | 	"github.com/micro/go-micro/server" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | type Option func(*Options) | ||||||
|  |  | ||||||
|  | type Options struct { | ||||||
|  | 	Name   string | ||||||
|  | 	Client client.Client | ||||||
|  | 	Server server.Server | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // The network name | ||||||
|  | func Name(n string) Option { | ||||||
|  | 	return func(o *Options) { | ||||||
|  | 		o.Name = n | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // The network client | ||||||
|  | func Client(c client.Client) Option { | ||||||
|  | 	return func(o *Options) { | ||||||
|  | 		o.Client = c | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // The network server | ||||||
|  | func Server(s server.Server) Option { | ||||||
|  | 	return func(o *Options) { | ||||||
|  | 		o.Server = s | ||||||
|  | 	} | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user