monitor

package
v1.6.10 Latest Latest
Warning

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

Go to latest
Published: Oct 25, 2023 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{
	Constructor: func(container container.Container) error {
		return container.Provides(
			NewConfig,
			NewWithConfigurator,
		)
	},
	BindFlags: func(flagSet *pflag.FlagSet, container container.Container) error {
		return container.Invoke(func(config *Config) {
			flagSet.DurationVar(
				&config.DelayReconnect,
				DelayReconnectFieldName,
				DelayReconnectDefault,
				"timeout between reconnect attempts",
			)
		})
	},
}

Functions

This section is empty.

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

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

func New

func New(
	closer closer.Closer,
	config *Config,
	clientConfig *client.Config,
	protocolConfig *protocol.Config,
	counter counter.Counter,
	logger logger.Logger,
) Monitor

func NewWithConfigurator

func NewWithConfigurator(
	config *Config,
	configurator configurator.Configurator,
	closer closer.Closer,
	clientConfig *client.Config,
	protocolConfig *protocol.Config,
	counter counter.Counter,
	logger logger.Logger,
) Monitor

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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