1
0
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:
Asim
2015-06-03 01:25:37 +01:00
parent 8cdc2b5f82
commit cdf2f2cbcd
13 changed files with 325 additions and 144 deletions

View File

@ -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 := &registry.Node{
Id: config.Id(),
Address: host,
Port: port,
Metadata: config.Metadata(),
}
service := &registry.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()
}