remove this code

This commit is contained in:
Asim Aslam 2019-07-31 17:19:49 +01:00
parent 679c5f0ccd
commit cdf0f14d58
3 changed files with 0 additions and 264 deletions

View File

@ -1,167 +0,0 @@
package network
import (
"context"
"sync"
"github.com/micro/go-micro/client"
"github.com/micro/go-micro/network/proxy/mucp"
"github.com/micro/go-micro/network/router"
"github.com/micro/go-micro/network/router/handler"
pb "github.com/micro/go-micro/network/router/proto"
"github.com/micro/go-micro/server"
)
type network struct {
options Options
handler server.Router
router pb.RouterService
sync.RWMutex
connected bool
exit chan bool
}
// process processes router advertisements and randomly sends the advert
// to a node in the network. Over a period of time the routers should converge.
func (n *network) process(advertChan <-chan *router.Advert) {
for {
select {
// process local adverts and randomly fire them at other nodes
case a := <-advertChan:
// create a proto advert
var events []*pb.Event
for _, event := range a.Events {
route := &pb.Route{
Service: event.Route.Service,
Address: event.Route.Address,
Gateway: event.Route.Gateway,
Network: event.Route.Network,
Link: event.Route.Link,
Metric: int64(event.Route.Metric),
}
e := &pb.Event{
Type: pb.EventType(event.Type),
Timestamp: event.Timestamp.UnixNano(),
Route: route,
}
events = append(events, e)
}
// fire the advert to a random network node
n.router.Process(context.Background(), &pb.Advert{
Id: n.options.Router.Options().Id,
Type: pb.AdvertType(a.Type),
Timestamp: a.Timestamp.UnixNano(),
Events: events,
})
case <-n.exit:
return
}
}
}
func (n *network) Name() string {
return n.options.Name
}
// Implements the server.ServeRequest method.
func (n *network) ServeRequest(ctx context.Context, req server.Request, rsp server.Response) error {
// If we're being called then execute our handlers
if req.Service() == n.options.Name {
return n.handler.ServeRequest(ctx, req, rsp)
}
// execute the proxy
return n.options.Proxy.ServeRequest(ctx, req, rsp)
}
func (n *network) Connect() error {
n.Lock()
defer n.Unlock()
// check if we're connected
if n.connected {
return nil
}
n.exit = make(chan bool)
// start advertising
advertChan, err := n.options.Router.Advertise()
if err != nil {
return err
}
// process the adverts
go n.process(advertChan)
// start the server
if err := n.options.Server.Start(); err != nil {
return err
}
// set connected to true
n.connected = true
return nil
}
func (n *network) Close() error {
n.Lock()
defer n.Unlock()
// check if we're connected
if !n.connected {
return nil
}
close(n.exit)
// set connected to false
n.connected = false
// stop the router
if err := n.options.Router.Stop(); err != nil {
return err
}
// stop the server
return n.options.Server.Stop()
}
// newNetwork returns a new network node
func newNetwork(opts ...Option) Network {
options := Options{
Name: DefaultName,
Address: DefaultAddress,
Client: client.DefaultClient,
Server: server.DefaultServer,
Proxy: mucp.NewProxy(),
Router: router.DefaultRouter,
}
for _, o := range opts {
o(&options)
}
// get the default server handler
sr := server.DefaultRouter
// create new router handler
hd := sr.NewHandler(&handler.Router{options.Router})
// register the router handler
sr.Handle(hd)
// set the server name
options.Server.Init(
server.Name(options.Name),
server.Address(options.Address),
server.Advertise(options.Advertise),
server.WithRouter(sr),
)
return &network{
options: options,
handler: sr,
router: pb.NewRouterService(options.Name, options.Client),
}
}

View File

@ -1,23 +0,0 @@
// 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"
DefaultAddress = ":0"
DefaultNetwork = NewNetwork()
)
// NewNetwork returns a new network interface
func NewNetwork(opts ...Option) Network {
return newNetwork(opts...)
}

View File

@ -1,74 +0,0 @@
package network
import (
"github.com/micro/go-micro/client"
"github.com/micro/go-micro/network/proxy"
"github.com/micro/go-micro/network/router"
"github.com/micro/go-micro/server"
)
type Option func(*Options)
type Options struct {
// Name of the network
Name string
// Address of the node
Address string
// Advertise a different address to the network
Advertise string
Client client.Client
Server server.Server
Proxy proxy.Proxy
Router router.Router
}
// The network name
func Name(n string) Option {
return func(o *Options) {
o.Name = n
}
}
// The network address
func Address(a string) Option {
return func(o *Options) {
o.Address = a
}
}
// The network advertise address
func Advertise(a string) Option {
return func(o *Options) {
o.Advertise = a
}
}
// 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
}
}
// The proxy to use
func Proxy(p proxy.Proxy) Option {
return func(o *Options) {
o.Proxy = p
}
}
// The router to use
func Router(r router.Router) Option {
return func(o *Options) {
o.Router = r
}
}