contracts/grpcall.go
2023-06-05 16:52:03 +08:00

46 lines
1.2 KiB
Go

package contracts
import (
"encoding/json"
"io"
"github.com/golang/protobuf/jsonpb"
"github.com/jhump/protoreflect/desc"
"google.golang.org/grpc"
"google.golang.org/grpc/metadata"
)
type GRpcall interface {
// 接口请求
Invoke(service, method, data string, headers []string) (GRpcResponse, error)
// 获取客户端连接
GetClientConn() *grpc.ClientConn
// 获取服务端, 服务列表
GetServices() ([]string, error)
// 获取服务端, 服务下的方法列表
GetServiceMethods(name string) ([]string, error)
// 获取服务所有类型
GetAnyResolver() (jsonpb.AnyResolver, error)
// 获取 proto 文件描述
GetAllFilesDescriptor() ([]*desc.FileDescriptor, error)
// 获取服务描述
GetServiceDescriptor(service string) (*desc.ServiceDescriptor, error)
// 获取服务方法描述
GetServiceMethodDescriptor(service, method string) (*desc.MethodDescriptor, error)
// 关闭客户端连接
Close() error
}
type GRpcResponse interface {
// 获取响应头
Header() metadata.MD
// 发送 stream 数据
Send(data string) error
// 接收 unary / stream 数据
Recv() io.Reader
// 接收 unary / stream 数据, 并转 json 对象
RecvDecoder() *json.Decoder
// 关闭 stream 数据
Close() error
}