pool

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: 14 Imported by: 0

README

Пул сокет клиентов.

Компонент предоставляет пул сокет конектов.

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

type Pooler interface {
    io.Closer
    runner.Process
    Get() monitor.Monitor
    GetChan() chan monitor.Monitor
    Put(client monitor.Monitor)
}
Объект конфигурации.
type Config struct {
    Size uint8
}

Описание полей:

Поле Описание Значение по умолчанию
Size Размер пула, этот параметр может быть передан одним из 3-х методов:
- флаг командной строки --client.socket.pool.size
- переменная окружения CLIENT_SOCKET_POOL_SIZE
- значение в конфиг файле client.socket.pool.size
10

Методы

  • Get() - возвращает конект из пула;
  • GetChan() - возвращает канал пула конектов;
  • Put(client monitor.Monitor) - возвращает конект в пул.

Documentation

Index

Constants

View Source
const (
	SizeFieldName = "client.socket.pool.size"

	SizeDefault = 10
)

Variables

View Source
var Component = &app.Component{
	Dependencies: app.Components{
		logger.Component,
		configurator.Component,
		runner.Component,
		metric.Component,
	},
	Constructor: app.Constructor(func(container container.Container) error {
		return container.Provides(
			monitor.NewConfig,
			counter.NewConfig,
			connector.NewConfig,
			middleware.NewReadConfig,
			middleware.NewWriteConfig,

			NewConfig,
			NewWithConfigurator,
			func(pool *Pool) Pooler { return pool },
		)
	}),
	BindFlags: app.BindFlags(func(flagSet *pflag.FlagSet, container container.Container) error {
		if err := monitor.BindFlags(flagSet, container); err != nil {
			return err
		}

		if err := counter.BindFlags(flagSet, container); err != nil {
			return err
		}

		if err := middleware.ReadTimeoutComponentBindFlags(flagSet, container); err != nil {
			return err
		}

		if err := middleware.WriteTimeoutComponentBindFlags(flagSet, container); err != nil {
			return err
		}

		return container.Invoke(func(config *Config) {
			flagSet.Uint8Var(&config.Size, SizeFieldName, SizeDefault, "")
		})
	}),
	Run: app.Run(func(container container.Container) error {
		if err := container.Invoke(connector.Configuration); err != nil {
			return err
		}

		if err := container.Invoke(counter.Configuration); err != nil {
			return err
		}

		if err := container.Invoke(monitor.Configuration); err != nil {
			return err
		}

		if err := container.Invoke(middleware.ReadConfigConfiguration); err != nil {
			return err
		}

		if err := container.Invoke(middleware.WriteConfigConfiguration); err != nil {
			return err
		}

		return container.Invoke(func(pool Pooler, runner runner.Runner) error {
			return runner.AddProcesses(pool)
		})
	}),
}

Functions

This section is empty.

Types

type Config

type Config struct {
	Size uint8
}

func Configuration

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

func NewConfig

func NewConfig() *Config

type Pool

type Pool struct {
	// contains filtered or unexported fields
}

func NewPool

func NewPool(
	config *Config,
	monitorCfg *monitor.Config,
	connectorCfg *connector.Config,
	counterCfg *counter.Config,
	logger logger.Logger,
	middlewareReadCfg *middleware.ReadConfig,
	middlewareWriteCfg *middleware.WriteConfig,
	runner runner.Runner,
	metric *metric.Metric,
) (*Pool, error)

func NewWithConfigurator

func NewWithConfigurator(
	config *Config,
	configurator configurator.Configurator,
	monitorCfg *monitor.Config,
	connectorCfg *connector.Config,
	counterCfg *counter.Config,
	logger logger.Logger,
	middlewareReadCfg *middleware.ReadConfig,
	middlewareWriteCfg *middleware.WriteConfig,
	runner runner.Runner,
	metric *metric.Metric,
) (*Pool, error)

func (*Pool) Close

func (pool *Pool) Close() error

func (*Pool) Get

func (pool *Pool) Get() monitor.Monitor

func (*Pool) GetChan

func (pool *Pool) GetChan() chan monitor.Monitor

func (*Pool) Name

func (pool *Pool) Name() string

func (*Pool) Process

func (pool *Pool) Process(ctx context.Context) error

func (*Pool) Put

func (pool *Pool) Put(client monitor.Monitor)

type Pooler

type Pooler interface {
	io.Closer
	runner.Process
	Get() monitor.Monitor
	GetChan() chan monitor.Monitor
	Put(client monitor.Monitor)
}

Jump to

Keyboard shortcuts

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