dashboard/pkg/rpcsup/jsonrpc.go

45 lines
767 B
Go

package rpcsup
import (
"dashboard/logger"
"net"
"net/rpc"
"net/rpc/jsonrpc"
)
func JsonServer(log *logger.Logger, address string, service interface{}) error {
if err := rpc.Register(service); err != nil {
log.Sugar().Error(err)
return err
}
listen, err := net.Listen("tcp", address)
if err != nil {
log.Sugar().Error(err)
return err
}
log.Sugar().Infof("Rpc server listen on: %s", address)
for {
accept, err := listen.Accept()
if err != nil {
log.Sugar().Error(err)
continue
}
jsonrpc.ServeConn(accept)
}
}
func JsonClient(log *logger.Logger, address string) (*rpc.Client, error) {
dial, err := net.Dial("tcp", address)
if err != nil {
log.Sugar().Error(err)
return nil, err
}
return jsonrpc.NewClient(dial), nil
}