Documentation ¶
Overview ¶
Package grpc implements the GRPC netListener through which plugins can expose their services/API to the outside world.
Index ¶
- func DeclareGRPCPortFlag(pluginName core.PluginName)
- func FixConfig(cfg *Config)
- func ListenAndServeGRPC(config Config, grpcServer *grpc.Server) (netListener net.Listener, err error)
- func PluginConfig(pluginCfg config.PluginConfig, cfg *Config, pluginName core.PluginName) error
- type Config
- type Deps
- type ListenAndServe
- type Plugin
- type Server
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
func FixConfig ¶
func FixConfig(cfg *Config)
FixConfig fill default values for empty fields (does nothing yet)
func ListenAndServeGRPC ¶
func ListenAndServeGRPC(config Config, grpcServer *grpc.Server) (netListener net.Listener, err error)
ListenAndServeGRPC starts a netListener.
func PluginConfig ¶
func PluginConfig(pluginCfg config.PluginConfig, cfg *Config, pluginName core.PluginName) error
PluginConfig tries : - to load flag <plugin-name>-port and then FixConfig() just in case - alternatively <plugin-name>-config and then FixConfig() just in case - alternatively DefaultConfig()
Types ¶
type Config ¶
type Config struct { // Endpoint is an address of GRPC netListener Endpoint string // 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 // MaxConcurrentStreams returns a ServerOption that will apply a limit on the number // of concurrent streams to each ServerTransport. MaxConcurrentStreams uint32 }
Config is a configuration for GRPC netListener It is meant to be extended with security (TLS...)
type Deps ¶
type Deps struct { Log logging.PluginLogger //inject PluginName core.PluginName //inject config.PluginConfig //inject HTTP rest.HTTPHandlers //inject optional }
Deps lists the dependencies of the Rest 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 ¶
Plugin maintains the GRPC netListener (see Init, AfterInit, Close methods)
func FromExisting ¶
FromExisting is a helper for preconfigured GRPC Server
func FromExistingServer ¶
func FromExistingServer(listenAndServe ListenAndServe) *Plugin
FromExistingServer is used mainly for testing purposes
func (*Plugin) AfterInit ¶
AfterInit starts the HTTP netListener.
func (*Plugin) GetPort ¶
GetPort returns plugin configuration port
func (*Plugin) Init ¶
Init is the plugin entry point called by Agent Core - It prepares GRPC netListener for registration of individual service
func (*Plugin) Server ¶
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 ... }
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 ... // } Server() *grpc.Server // GetPort returns configured port number (for debugging purposes) GetPort() int }
Server defines the API for getting grpc.Server instance that is useful for registering new GRPC service