monitor

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

README

Монитор активности соединения.

Компонент предоставляет пассивный монитор соединения socket клиента. Пассивный монитор не мешает передачи данных между socket клиентом и socket сервером. При обнаружении потери коннекта, монитор стартует процесс переподключения. Реализует интерфейс Monitor, который использует механизм "встраивания" и встраивает в себя интерфейс github.com/D3rus/go-library/socket/client/Client, что позволяет использовать монитор как socket клиента, так же реализация интерфейса MonitorMonitor доступна в контейнере объектов.

type Monitor interface {
	client.Client

	Status() status.ConnectStatus
	Reconnect() error
}

Монитор зависит от следующих компонентов:

Объект конфигурации.
type Config struct {
	DelayReconnect time.Duration
}

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

Поле Описание Значение по умолчанию
DelayReconnect Таймаут между попытками переподключения, этот параметр может быть передан одним из 3-х методов:
- флаг командной строки --client.socket.monitor.reconnect.delay
- переменная окружения CLIENT_SOCKET_MONITOR_RECONNECT_DELAY
- значение в конфиг файле client.socket.monitor.reconnect.delay
30s

Documentation

Index

Constants

View Source
const (
	DelayReconnectFieldName = "client.socket.monitor.reconnect.delay"

	DelayReconnectDefault = 10 * time.Second
)

Variables

View Source
var Component = &app.Component{
	Dependencies: app.Components{
		logger.Component,
		configurator.Component,
		runner.Component,
		counter.Component,
	},
	Constructor: app.Constructor(func(container container.Container) error {
		return container.Provides(
			connector.NewConfig,
			NewConfig,
			NewWithConfigurator,
			func(client Monitor) client.Client { return client },
		)
	}),
	BindFlags: app.BindFlags(BindFlags),
	Run: app.Run(func(container container.Container) error {
		if err := container.Invoke(connector.Configuration); err != nil {
			return err
		}

		return container.Invoke(func(client Monitor, runner runner.Runner) error {
			return runner.AddProcesses(client)
		})
	}),
}

Functions

func BindFlags added in v1.8.12

func BindFlags(flagSet *pflag.FlagSet, container container.Container) error

Types

type Config

type Config struct {
	DelayReconnect time.Duration
}

func Configuration

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

func NewConfig

func NewConfig() *Config

type Identifier

type Identifier uint32

type Monitor

type Monitor interface {
	client.Client
	runner.Process

	Status() status.ConnectStatus
	Identifier() Identifier
	Reconnect() error
}

func New

func New(
	config *Config,
	connectorConfig *connector.Config,
	counter counter.Counter,
	logger logger.Logger,
	options ...Option,
) Monitor

func NewWithConfigurator

func NewWithConfigurator(
	config *Config,
	configurator configurator.Configurator,
	connectorConfig *connector.Config,
	counter counter.Counter,
	logger logger.Logger,
) Monitor

type Option added in v1.8.12

type Option func(monitor *monitor)

func WithName added in v1.8.12

func WithName(name string) Option

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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