Documentation ¶
Overview ¶
Package grpcreflect provides GRPC-specific extensions to protobuf reflection. This includes a way to access rich service descriptors for all services that a GRPC server exports.
Also included is an easy-to-use client for the GRPC reflection service (https://goo.gl/2ILAHf). This client makes it easy to ask a server (that supports the reflection service) for metadata on its exported services, which could be used to construct a dynamic client. (See the grpcdynamic package in this same repo for more on that.)
Index ¶
- func IsElementNotFoundError(err error) bool
- func LoadServiceDescriptor(svc *grpc.ServiceDesc) (*desc.ServiceDescriptor, error)
- func LoadServiceDescriptors(s *grpc.Server) (map[string]*desc.ServiceDescriptor, error)
- type Client
- func (cr *Client) AllExtensionNumbersForType(extendedMessageName string) ([]int32, error)
- func (cr *Client) FileByFilename(filename string) (*desc.FileDescriptor, error)
- func (cr *Client) FileContainingExtension(extendedMessageName string, extensionNumber int32) (*desc.FileDescriptor, error)
- func (cr *Client) FileContainingSymbol(symbol string) (*desc.FileDescriptor, error)
- func (cr *Client) ListServices() ([]string, error)
- func (cr *Client) Reset()
- func (cr *Client) ResolveEnum(enumName string) (*desc.EnumDescriptor, error)
- func (cr *Client) ResolveEnumValues(enumName string) (map[string]int32, error)
- func (cr *Client) ResolveExtension(extendedType string, extensionNumber int32) (*desc.FieldDescriptor, error)
- func (cr *Client) ResolveMessage(messageName string) (*desc.MessageDescriptor, error)
- func (cr *Client) ResolveService(serviceName string) (*desc.ServiceDescriptor, error)
- type ProtocolError
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func IsElementNotFoundError ¶
IsElementNotFoundError determines if the given error indicates that a file name, symbol name, or extension field was could not be found by the server.
func LoadServiceDescriptor ¶
func LoadServiceDescriptor(svc *grpc.ServiceDesc) (*desc.ServiceDescriptor, error)
LoadServiceDescriptor loads a rich descriptor for a given service description generated by protoc-gen-go. Generated code contains an unexported symbol with a name like "_<Service>_serviceDesc" which is the service's description. It is used internally to register a service implementation with a GRPC server. But it can also be used by this package to retrieve the rich descriptor for the service.
func LoadServiceDescriptors ¶
LoadServiceDescriptors loads the service descriptors for all services exposed by the given GRPC server.
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client is a client connection to a server for performing reflection calls and resolving remote symbols.
func NewClient ¶
func NewClient(ctx context.Context, stub rpb.ServerReflectionClient) *Client
NewClient creates a new Client with the given root context and using the given RPC stub for talking to the server.
func (*Client) AllExtensionNumbersForType ¶
AllExtensionNumbersForType asks the server for all known extension numbers for the given fully-qualified message name.
func (*Client) FileByFilename ¶
func (cr *Client) FileByFilename(filename string) (*desc.FileDescriptor, error)
FileByFilename asks the server for a file descriptor for the proto file with the given name.
func (*Client) FileContainingExtension ¶
func (cr *Client) FileContainingExtension(extendedMessageName string, extensionNumber int32) (*desc.FileDescriptor, error)
FileContainingExtension asks the server for a file descriptor for the proto file that declares an extension with the given number for the given fully-qualified message name.
func (*Client) FileContainingSymbol ¶
func (cr *Client) FileContainingSymbol(symbol string) (*desc.FileDescriptor, error)
FileContainingSymbol asks the server for a file descriptor for the proto file that declares the given fully-qualified symbol.
func (*Client) ListServices ¶
ListServices asks the server for the fully-qualified names of all exposed services.
func (*Client) Reset ¶
func (cr *Client) Reset()
Reset ensures that any active stream with the server is closed, releasing any resources.
func (*Client) ResolveEnum ¶
func (cr *Client) ResolveEnum(enumName string) (*desc.EnumDescriptor, error)
ResolveEnum asks the server to resolve the given fully-qualified enum name into an enum descriptor.
func (*Client) ResolveEnumValues ¶
ResolveEnumValues asks the server to resolve the given fully-qualified enum name into a map of names to numbers that represents the enum's values.
func (*Client) ResolveExtension ¶
func (cr *Client) ResolveExtension(extendedType string, extensionNumber int32) (*desc.FieldDescriptor, error)
ResolveExtension asks the server to resolve the given extension number and fully-qualified message name into a field descriptor.
func (*Client) ResolveMessage ¶
func (cr *Client) ResolveMessage(messageName string) (*desc.MessageDescriptor, error)
ResolveMessage asks the server to resolve the given fully-qualified message name into a message descriptor.
func (*Client) ResolveService ¶
func (cr *Client) ResolveService(serviceName string) (*desc.ServiceDescriptor, error)
ResolveService asks the server to resolve the given fully-qualified service name into a service descriptor.
type ProtocolError ¶
type ProtocolError struct {
// contains filtered or unexported fields
}
ProtocolError is an error returned when the server sends a response of the wrong type.
func (ProtocolError) Error ¶
func (p ProtocolError) Error() string