Some network inspiration
This commit is contained in:
parent
89fc142e47
commit
fca89e06ef
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
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user