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 }