mirror of
https://github.com/go-micro/go-micro.git
synced 2025-06-12 22:07:47 +02:00
Change receiver to handler, breaking change, grrr
This commit is contained in:
104
server/server.go
104
server/server.go
@ -3,22 +3,19 @@ package server
|
||||
import (
|
||||
"os"
|
||||
"os/signal"
|
||||
"strconv"
|
||||
"strings"
|
||||
"syscall"
|
||||
|
||||
"code.google.com/p/go-uuid/uuid"
|
||||
log "github.com/golang/glog"
|
||||
"github.com/myodc/go-micro/registry"
|
||||
"github.com/myodc/go-micro/transport"
|
||||
)
|
||||
|
||||
type Server interface {
|
||||
Config() options
|
||||
Init(...Option)
|
||||
NewReceiver(interface{}) Receiver
|
||||
NewNamedReceiver(string, interface{}) Receiver
|
||||
Register(Receiver) error
|
||||
Handle(Handler) error
|
||||
NewHandler(interface{}) Handler
|
||||
Register() error
|
||||
Deregister() error
|
||||
Start() error
|
||||
Stop() error
|
||||
}
|
||||
@ -28,46 +25,11 @@ type Option func(*options)
|
||||
var (
|
||||
DefaultAddress = ":0"
|
||||
DefaultName = "go-server"
|
||||
DefaultVersion = "1.0.0"
|
||||
DefaultId = uuid.NewUUID().String()
|
||||
DefaultServer Server = newRpcServer()
|
||||
)
|
||||
|
||||
func Name(n string) Option {
|
||||
return func(o *options) {
|
||||
o.name = n
|
||||
}
|
||||
}
|
||||
|
||||
func Id(id string) Option {
|
||||
return func(o *options) {
|
||||
o.id = id
|
||||
}
|
||||
}
|
||||
|
||||
func Address(a string) Option {
|
||||
return func(o *options) {
|
||||
o.address = a
|
||||
}
|
||||
}
|
||||
|
||||
func Registry(r registry.Registry) Option {
|
||||
return func(o *options) {
|
||||
o.registry = r
|
||||
}
|
||||
}
|
||||
|
||||
func Transport(t transport.Transport) Option {
|
||||
return func(o *options) {
|
||||
o.transport = t
|
||||
}
|
||||
}
|
||||
|
||||
func Metadata(md map[string]string) Option {
|
||||
return func(o *options) {
|
||||
o.metadata = md
|
||||
}
|
||||
}
|
||||
|
||||
func Config() options {
|
||||
return DefaultServer.Config()
|
||||
}
|
||||
@ -83,16 +45,20 @@ func NewServer(opt ...Option) Server {
|
||||
return newRpcServer(opt...)
|
||||
}
|
||||
|
||||
func NewReceiver(handler interface{}) Receiver {
|
||||
return DefaultServer.NewReceiver(handler)
|
||||
func NewHandler(h interface{}) Handler {
|
||||
return DefaultServer.NewHandler(h)
|
||||
}
|
||||
|
||||
func NewNamedReceiver(path string, handler interface{}) Receiver {
|
||||
return DefaultServer.NewNamedReceiver(path, handler)
|
||||
func Handle(h Handler) error {
|
||||
return DefaultServer.Handle(h)
|
||||
}
|
||||
|
||||
func Register(r Receiver) error {
|
||||
return DefaultServer.Register(r)
|
||||
func Register() error {
|
||||
return DefaultServer.Register()
|
||||
}
|
||||
|
||||
func Deregister() error {
|
||||
return DefaultServer.Deregister()
|
||||
}
|
||||
|
||||
func Run() error {
|
||||
@ -100,44 +66,20 @@ func Run() error {
|
||||
return err
|
||||
}
|
||||
|
||||
// parse address for host, port
|
||||
config := DefaultServer.Config()
|
||||
var host string
|
||||
var port int
|
||||
parts := strings.Split(config.Address(), ":")
|
||||
if len(parts) > 1 {
|
||||
host = strings.Join(parts[:len(parts)-1], ":")
|
||||
port, _ = strconv.Atoi(parts[len(parts)-1])
|
||||
} else {
|
||||
host = parts[0]
|
||||
}
|
||||
|
||||
// register service
|
||||
node := ®istry.Node{
|
||||
Id: config.Id(),
|
||||
Address: host,
|
||||
Port: port,
|
||||
Metadata: config.Metadata(),
|
||||
}
|
||||
|
||||
service := ®istry.Service{
|
||||
Name: config.Name(),
|
||||
Nodes: []*registry.Node{node},
|
||||
}
|
||||
|
||||
log.Infof("Registering node: %s", node.Id)
|
||||
|
||||
err := config.registry.Register(service)
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to register: %v", err)
|
||||
if err := DefaultServer.Register(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
ch := make(chan os.Signal, 1)
|
||||
signal.Notify(ch, syscall.SIGTERM, syscall.SIGINT, syscall.SIGKILL)
|
||||
log.Infof("Received signal %s", <-ch)
|
||||
|
||||
log.Infof("Deregistering %s", node.Id)
|
||||
config.registry.Deregister(service)
|
||||
if err := DefaultServer.Deregister(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
log.Infof("Deregistering %s", DefaultServer.Config().Id())
|
||||
DefaultServer.Deregister()
|
||||
|
||||
return Stop()
|
||||
}
|
||||
|
Reference in New Issue
Block a user