Documentation ¶
Overview ¶
Package grpc implements the GRPC netListener through which plugins can expose their services/API to the outside world.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DeclareGRPCPortFlag ¶
func DeclareGRPCPortFlag(pluginName core.PluginName)
DeclareGRPCPortFlag declares GRPC port (with usage & default value) a flag for a particular plugin name
Types ¶
type Config ¶
type Config struct { // Endpoint is an address of GRPC netListener Endpoint string `json:"endpoint"` // Three or four-digit permission setup for unix domain socket file (if used) Permission int `json:"permission"` // If set and unix type network is used, the existing socket file will be always removed and re-created ForceSocketRemoval bool `json:"force-socket-removal"` // Network defaults to "tcp" if unset, and can be set to one of the following values: // "tcp", "tcp4", "tcp6", "unix", "unixpacket" or any other value accepted by net.Listen Network string `json:"network"` // MaxMsgSize returns a ServerOption to set the max message size in bytes for inbound mesages. // If this is not set, gRPC uses the default 4MB. MaxMsgSize int `json:"max-msg-size"` // MaxConcurrentStreams returns a ServerOption that will apply a limit on the number // of concurrent streams to each ServerTransport. MaxConcurrentStreams uint32 `json:"max-concurrent-streams"` }
Config is a configuration for GRPC netListener It is meant to be extended with security (TLS...)
type Deps ¶
type Deps struct { Log logging.PluginLogger PluginName core.PluginName HTTP rest.HTTPHandlers config.PluginConfig }
Deps is a list of injected dependencies of the GRPC plugin.
type ListenAndServe ¶
type ListenAndServe func(config Config, grpcServer *grpc.Server) ( netListener io.Closer, err error)
ListenAndServe is a function that uses <config> & <handler> to handle GRPC Requests. It return an instance of io.Closer to close the Server (net listener) during cleanup.
type Plugin ¶
type Plugin struct { Deps // Stored GRPC config (used in example) *Config // contains filtered or unexported fields }
Plugin maintains the GRPC netListener (see Init, AfterInit, Close methods)
func FromExistingServer ¶
func FromExistingServer(listenAndServe ListenAndServe) *Plugin
FromExistingServer is used mainly for testing purposes
func (*Plugin) IsDisabled ¶ added in v1.3.0
IsDisabled returns *true* if the plugin is not in use due to missing grpc configuration.
type Server ¶
type Server interface { // Server is a getter for accessing grpc.Server (of a GRPC plugin) // // Example usage: // // protocgenerated.RegisterServiceXY(plugin.Deps.GRPC.Server(), &ServiceXYImplP{}) // // type Deps struct { // GRPC grps.Server // inject plugin implementing RegisterHandler // // other dependencies ... // } GetServer() *grpc.Server // Disabled informs other plugins about availability IsDisabled() bool }
Server defines the API for getting grpc.Server instance that is useful for registering new GRPC services