config

package
v0.2.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 10, 2023 License: AGPL-3.0 Imports: 8 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// Config constants.
	Default   = "default"
	EnvPrefix = "GATEWAYD_"

	// Logger constants.
	DefaultLogFileName       = "gatewayd.log"
	DefaultLogFilePermission = 0o660
	DefaultLogOutput         = "console"
	DefaultLogLevel          = "info"

	// Plugin constants.
	DefaultMinPort      = 50000
	DefaultMaxPort      = 60000
	PluginPriorityStart = 1000
	LoggerName          = "plugin"

	// Client constants.
	DefaultChunkSize          = 4096
	DefaultReceiveDeadline    = 0 // 0 means no deadline (timeout)
	DefaultSendDeadline       = 0
	DefaultTCPKeepAlivePeriod = "30s"

	// Pool constants.
	EmptyPoolCapacity        = 0
	DefaultPoolSize          = 10
	MinimumPoolSize          = 2
	DefaultHealthCheckPeriod = "60s" // This must match PostgreSQL authentication timeout.

	// Server constants.
	DefaultListenNetwork = "tcp"
	DefaultListenAddress = "0.0.0.0:15432"
	DefaultTickInterval  = "5s"
	DefaultBufferSize    = 1 << 24 // 16777216 bytes
	DefaultTCPKeepAlive  = "3s"
	DefaultLoadBalancer  = "roundrobin"

	// Utility constants.
	DefaultSeed        = 1000
	ChecksumBufferSize = 65536
)

Variables

This section is empty.

Functions

func LoadEnvVars added in v0.2.2

func LoadEnvVars(cfg *koanf.Koanf)

LoadEnvVars loads the environment variables into the configuration with the given prefix, "GATEWAYD_".

func LoadGlobalConfigDefaults

func LoadGlobalConfigDefaults(cfg *koanf.Koanf)

LoadDefaultConfig loads the default configuration before loading the config file.

func LoadPluginConfigDefaults

func LoadPluginConfigDefaults(cfg *koanf.Koanf)

LoadPluginConfigDefaults loads the default plugin configuration before loading the plugin config file.

Types

type Client

type Client struct {
	Network            string        `koanf:"network"`
	Address            string        `koanf:"address"`
	TCPKeepAlive       bool          `koanf:"tcpKeepAlive"`
	TCPKeepAlivePeriod time.Duration `koanf:"tcpKeepAlivePeriod"`
	ReceiveBufferSize  int           `koanf:"receiveBufferSize"`
	ReceiveChunkSize   int           `koanf:"receiveChunkSize"`
	ReceiveDeadline    time.Duration `koanf:"receiveDeadline"`
	SendDeadline       time.Duration `koanf:"sendDeadline"`
}

type CompatPolicy

type CompatPolicy uint
const (
	Strict CompatPolicy = iota
	Loose
)

CompatPolicy is the compatibility policy for plugins.

type GlobalConfig

type GlobalConfig struct {
	Loggers map[string]Logger `koanf:"loggers"`
	Clients map[string]Client `koanf:"clients"`
	Pools   map[string]Pool   `koanf:"pools"`
	Proxy   map[string]Proxy  `koanf:"proxy"`
	Server  Server            `koanf:"server"`
}

type LogOutput

type LogOutput uint
const (
	Console LogOutput = iota
	Stdout
	Stderr
	Buffer // Buffer the output and return it as a string (for testing).
	File
)

LogOutput is the output type for the logger.

type Logger

type Logger struct {
	Output     string `koanf:"output"`
	FileName   string `koanf:"fileName"`
	TimeFormat string `koanf:"timeFormat"`
	Level      string `koanf:"level"`
	Permission uint32 `koanf:"permission"`
	NoColor    bool   `koanf:"noColor"`
	StartupMsg bool   `koanf:"startupMsg"`
}

func (Logger) GetLevel

func (l Logger) GetLevel() zerolog.Level

GetLevel returns the logger level from config file.

func (Logger) GetOutput

func (l Logger) GetOutput() LogOutput

GetOutput returns the logger output from config file.

func (Logger) GetTimeFormat

func (l Logger) GetTimeFormat() string

GetTimeFormat returns the logger time format from config file.

type Plugin

type Plugin struct {
	Name      string   `koanf:"name"`
	Enabled   bool     `koanf:"enabled"`
	LocalPath string   `koanf:"localPath"`
	Args      []string `koanf:"args"`
	Env       []string `koanf:"env"`
	Checksum  string   `koanf:"checksum"`
}

type PluginConfig

type PluginConfig struct {
	VerificationPolicy  string   `koanf:"verificationPolicy"`
	CompatibilityPolicy string   `koanf:"compatibilityPolicy"`
	Plugins             []Plugin `koanf:"plugins"`
}

func (PluginConfig) GetPluginCompatPolicy

func (p PluginConfig) GetPluginCompatPolicy() CompatPolicy

GetPluginCompatPolicy returns the plugin compatibility policy from plugin config file.

func (PluginConfig) GetVerificationPolicy

func (p PluginConfig) GetVerificationPolicy() Policy

GetVerificationPolicy returns the hook verification policy from plugin config file.

type Policy

type Policy uint
const (
	// Non-strict (permissive) mode.
	PassDown Policy = iota // Pass down the extra keys/values in result to the next plugins
	// Strict mode.
	Ignore // Ignore errors and continue
	Abort  // Abort on first error and return results
	Remove // Remove the hook from the list on error and continue
)

Policy is the policy for hook verification.

type Pool

type Pool struct {
	Size int `koanf:"size"`
}

func (Pool) GetSize

func (p Pool) GetSize() int

GetSize returns the pool size from config file.

type Proxy

type Proxy struct {
	Elastic             bool          `koanf:"elastic"`
	ReuseElasticClients bool          `koanf:"reuseElasticClients"`
	HealthCheckPeriod   time.Duration `koanf:"healthCheckPeriod"`
}

type Server

type Server struct {
	EnableTicker     bool          `koanf:"enableTicker"`
	MultiCore        bool          `koanf:"multiCore"`
	LockOSThread     bool          `koanf:"lockOSThread"`
	ReuseAddress     bool          `koanf:"reuseAddress"`
	ReusePort        bool          `koanf:"reusePort"`
	TCPNoDelay       bool          `koanf:"tcpNoDelay"`
	ReadBufferCap    int           `koanf:"readBufferCap"`
	WriteBufferCap   int           `koanf:"writeBufferCap"`
	SocketRecvBuffer int           `koanf:"socketRecvBuffer"`
	SocketSendBuffer int           `koanf:"socketSendBuffer"`
	SoftLimit        uint64        `koanf:"softLimit"`
	HardLimit        uint64        `koanf:"hardLimit"`
	TCPKeepAlive     time.Duration `koanf:"tcpKeepAlive"`
	TickInterval     time.Duration `koanf:"tickInterval"`
	Network          string        `koanf:"network"`
	Address          string        `koanf:"address"`
	LoadBalancer     string        `koanf:"loadBalancer"`
}

func (Server) GetLoadBalancer

func (s Server) GetLoadBalancer() gnet.LoadBalancing

GetLoadBalancer returns the load balancing algorithm to use.

func (Server) GetTCPNoDelay

func (s Server) GetTCPNoDelay() gnet.TCPSocketOpt

GetTCPNoDelay returns the TCP no delay option from config file.

type Status

type Status uint
const (
	Running Status = iota
	Stopped
)

Status is the status of the server.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL