fix
This commit is contained in:
41
pkg/rpc/server.go
Normal file
41
pkg/rpc/server.go
Normal file
@@ -0,0 +1,41 @@
|
||||
package rpc
|
||||
|
||||
import (
|
||||
"github.com/iwannay/log"
|
||||
"net"
|
||||
"net/rpc"
|
||||
)
|
||||
|
||||
// listen Start rpc server
|
||||
func listen(addr string, srcvr ...interface{}) error {
|
||||
var err error
|
||||
for _, v := range srcvr {
|
||||
if err = rpc.Register(v); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
l, err := net.Listen("tcp4", addr)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer func() {
|
||||
log.Info("listen rpc", addr, "close")
|
||||
if err := l.Close(); err != nil {
|
||||
log.Infof("listen.Close() error(%v)", err)
|
||||
}
|
||||
}()
|
||||
|
||||
rpc.Accept(l)
|
||||
return nil
|
||||
}
|
||||
|
||||
// ListenAndServe run rpc server
|
||||
func ListenAndServe(addr string, srcvr ...interface{}) {
|
||||
log.Info("rpc server listen:", addr)
|
||||
err := listen(addr, srcvr...)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user