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 ( import (
"fmt" "fmt"
"net"
"net/rpc"
"net/rpc/jsonrpc"
"os" "os"
"os/signal" "os/signal"
"scagnet/config"
"scagnet/core"
"scagnet/util" "scagnet/util"
"syscall" "syscall"
"go.uber.org/zap"
) )
// 输入-d 参数,以守护进程方式运行 // 输入-d 参数,以守护进程方式运行
@ -36,11 +43,38 @@ func main() {
// fmt.Println("JSON RPC服务端") // fmt.Println("JSON RPC服务端")
// 初始化日志 // 初始化日志
logger := util.NewProductionLogger() logger := util.NewProductionLogger()
defer logger.Sync()
logger.Info("JSON RPC服务端启动") logger.Info("JSON RPC服务端启动")
// 检查是否以守护进程方式运行 // 检查是否以守护进程方式运行
if isDaemon() { 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) // quit := make(chan os.Signal)

Loading…
Cancel
Save