package main import ( "context" "linkfog.com/pluginx/pluginrpc" pb "linkfog.com/pluginx/proto" "linkfog.com/public/lib/l" ) type pluginServer struct { pb.UnimplementedPluginServer } func newServer() *pluginServer { s := &pluginServer{} return s } func (s *pluginServer) Call(ctx context.Context, req *pb.Req) (*pb.Res, error) { res := pluginrpc.NewRes(req, 0, "success", []byte("pong")) return res, nil } func (s *pluginServer) SendFile(stream pb.Plugin_SendFileServer) error { return pluginrpc.SendFileHelper(stream, SendFileHandle) } func SendFileHandle(fs *pb.FileStream, filePath string) { l.Info("recv file header:", fs.Header) l.Infof("recv file name:%s, purpose:%s, size:%d, path:%s", fs.Name, fs.Purpose, fs.TotalSize, filePath) } func main() { pluginServer := newServer() grpcServerHelper, err := pluginrpc.NewPluginGrpcServer("/tmp/unix_domain.sock", pluginServer) if err != nil { l.Error("NewPluginGrpcServer err:", err) return } defer grpcServerHelper.Close() select {} }