manager

package
v1.9.14 Latest Latest
Warning

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

Go to latest
Published: Apr 22, 2024 License: MIT Imports: 18 Imported by: 0

README

Менеджер сокет серверов.

Пакет предоставляет менеджер, для одновременного управления несколькими сокет серверами.

Конфигурирование может осуществляться только через файл конфигурации, менеджер использует те же параметры, что и обычный сокет сервер, но в неймспейсе server.socket.manager, формат конфигурцаии:

server:
  socket:
    manager:
      server1:
        max_connection: 10
        protocol: udp
        port: 10000
        timeout:
          read: 1s
      server2:
        max_connection: 10
        protocol: udp
        port: 10001
        timeout:
          read: 1s

server1 и server2, имена сокет серверов, по которым они доступны в менджере серверов.

Интерфейс, доступен в контейнере объектов:

type Manager interface {
	io.Closer
	runner.Process
	GetServer(name string) (server.Server, error)
	Use(middlewares ...server.Middleware) Manager
}
Доступные методы.
  • GetServer(name string) (server.Server, error) - метод позволяет получить инстанц сервера с определенным именем;
  • Use(middlewares ...server.Middleware) Manager - принимает список middleware и принимает их ко всем серверам, под управением.

Documentation

Index

Constants

View Source
const (
	ServersFieldName                  = "server.socket.manager"
	LimiterMaximumConnectionFieldName = "max_connection"
	ListenerProtocolFieldName         = "protocol"
	ListenerInterfaceFieldName        = "interface"
	ListenerPortFieldName             = "port"
	ListenerReadTimeoutFieldName      = "timeout.read"
	ListenerWriteTimeoutFieldName     = "timeout.write"
)

Variables

View Source
var Component = &app.Component{
	Dependencies: app.Components{
		metric.Component,
		logger.Component,
		configurator.Component,
		runner.Component,
	},
	Constructor: app.Constructor(func(container container.Container) error {
		return container.Provides(
			NewConfig,
			NewManagerWithConfigurator,
		)
	}),
	Run: app.Run(func(container container.Container) error {
		return container.Invoke(func(appConfig *app.Config, logger logger.Logger, manager Manager, runner runner.Runner, metric *metric.Metric) error {
			manager.Use(
				middleware.Recoverer(logger),
				middleware.ConnectionLogger(logger),
				middleware.NewConnectionCounter(appConfig),
				middleware.ReadBytesLogger(logger),
				middleware.WriteBytesLogger(logger),
			)

			return runner.AddProcesses(manager)
		})
	}),
}

Functions

This section is empty.

Types

type Config

type Config struct {
	Servers []*ServerConfig
}

func Configuration

func Configuration(config *Config, configurator configurator.Configurator) (*Config, error)

func NewConfig

func NewConfig() *Config

type Manager

type Manager interface {
	io.Closer
	runner.Process
	GetServer(name string) (server.Server, error)
	Use(middlewares ...server.Middleware) Manager
}

func NewManagerWithConfigurator

func NewManagerWithConfigurator(config *Config, logger logger.Logger, configurator configurator.Configurator, metric *metric.Metric) (Manager, error)

type ServerConfig

type ServerConfig struct {
	Name        string
	LimiterCfg  *limiter.Config
	ListenerCfg *listener.Config
	Timeout     *Timeout
}

type Timeout

type Timeout struct {
	Read  time.Duration
	Write time.Duration
}

Jump to

Keyboard shortcuts

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