42 lines
699 B
Go
42 lines
699 B
Go
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)
|
|
}
|
|
|
|
}
|