Browse Source

增加jsonrpc服务

master
xyiege 5 months ago
parent
commit
c54004ae38
  1. 19
      scagent/core/JsonRpc.go
  2. 34
      scagent/main.go

19
scagent/core/JsonRpc.go

@ -0,0 +1,19 @@
package core
// 传入的参数
type Args struct {
FilePath string `json:"file_path"`
}
// 返回的参数
type Reply struct {
FilePath string `json:"file_path"`
}
//
type FileRpc string
// 获取文件路径
func (f *FileRpc) GetFilePath(args *Args, replay *Reply) error {
return nil
}

34
scagent/main.go

@ -2,10 +2,17 @@ package main
import (
"fmt"
"net"
"net/rpc"
"net/rpc/jsonrpc"
"os"
"os/signal"
"scagnet/config"
"scagnet/core"
"scagnet/util"
"syscall"
"go.uber.org/zap"
)
// 输入-d 参数,以守护进程方式运行
@ -36,11 +43,38 @@ func main() {
// fmt.Println("JSON RPC服务端")
// 初始化日志
logger := util.NewProductionLogger()
defer logger.Sync()
logger.Info("JSON RPC服务端启动")
// 检查是否以守护进程方式运行
if isDaemon() {
// 以守护进程方式运行
jrpc := new(core.FileRpc)
rpc.Register(jrpc)
//
sport := fmt.Sprintf(":%v", config.G.Port)
tcpAddr, err := net.ResolveTCPAddr("tcp", sport)
if err != nil {
logger.Error("ResolveTCPAddr failed", zap.Error(err))
return
}
// 监听
listenr, err := net.ListenTCP("tcp", tcpAddr)
if err != nil {
logger.Error("ListenTCP failed", zap.Error(err))
return
}
for {
conn, err := listenr.AcceptTCP()
if err != nil {
logger.Error("AcceptTCP failed", zap.Error(err))
continue
}
jsonrpc.ServeConn(conn)
}
}
// 优雅退出
// quit := make(chan os.Signal)

Loading…
Cancel
Save