protocol

package
v1.5.9 Latest Latest
Warning

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

Go to latest
Published: Oct 25, 2023 License: MIT Imports: 9 Imported by: 0

README

Протоколы TCP/UDP.

Компонент предоставляет "голый" socket клиент. Реализует интерфейс net.Conn, который доступен в контейнере объектов.

Объект конфигурации.
type Config struct {
	Protocol        string
	Address         string
	Port            uint16
	KeepAlivePeriod time.Duration
}

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

Поле Описание Значение по умолчанию Доступные значения
Protocol Протокол socket клиента, этот параметр может быть передан одним из 3-х методов:
- флаг командной строки --client.socket.protocol
- переменная окружения CLIENT_SOCKET_PROTOCOL
- значение в конфиг файле client.socket.protocol
tcp tcp, udp
Address Адрес хоста для подключения, этот параметр может быть передан одним из 3-х методов:
- флаг командной строки --client.socket.address
- переменная окружения CLIENT_SOCKET_ADDRESS
- значение в конфиг файле client.socket.address
127.0.0.1
Port Порт хоста для подключения, этот параметр может быть передан одним из 3-х методов:
- флаг командной строки --client.socket.port
- переменная окружения CLIENT_SOCKET_PORT
- значение в конфиг файле client.socket.port
8081
KeepAlivePeriod Периодичность рассылки пакетов, для поддержания открытого соединения, этот параметр может быть передан одним из 3-х методов:
- флаг командной строки --client.socket.keep_alive_period
- переменная окружения CLIENT_SOCKET_KEEP_ALIVE_PERIOD
- значение в конфиг файле client.socket.keep_alive_period

Documentation

Index

Constants

View Source
const (
	ProtocolFieldName        = "client.socket.protocol"
	HostFieldName            = "client.socket.host"
	PortFieldName            = "client.socket.port"
	KeepAlivePeriodFiledName = "client.socket.keep_alive_period"
	DSNFieldName             = "client.socket.dsn"

	ProtocolTCP = "tcp"
	ProtocolUDP = "udp"

	ProtocolDefault = ProtocolTCP
	HostDefault     = "127.0.0.1"
	PortDefault     = uint16(8081)
)

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.StringVar(&config.Protocol, ProtocolFieldName, ProtocolDefault, fmt.Sprintf(
				"socket protocol. Available protocols [%s]",
				strings.Join([]string{ProtocolTCP, ProtocolUDP}, ","),
			))
			flagSet.StringVar(&config.DSN, DSNFieldName, DSNDefault, "connection string if set to \"dsn\", fields \"host\" and \"port\" are ignored")
			flagSet.StringVar(&config.Host, HostFieldName, HostDefault, "connection address")
			flagSet.Uint16Var(&config.Port, PortFieldName, PortDefault, "connection port")
			flagSet.DurationVar(
				&config.KeepAlivePeriod,
				KeepAlivePeriodFiledName,
				0,
				"period between keepalive messages for protocol type tcp",
			)
		})
	},
}
View Source
var (
	DSNDefault = fmt.Sprintf("%s:%d", HostDefault, PortDefault)
)

Functions

func New

func New(config *Config, informer logger.Informer) (net.Conn, error)

func NewTCP

func NewTCP(config *Config, informer logger.Informer) (*net.TCPConn, error)

func NewUDP

func NewUDP(config *Config, informer logger.Informer) (*net.UDPConn, error)

func NewWithConfigurator

func NewWithConfigurator(
	config *Config,
	configurator configurator.Configurator,
	informer logger.Informer,
) (net.Conn, error)

Types

type Config

type Config struct {
	DSN             string
	Protocol        string
	Host            string
	Port            uint16
	KeepAlivePeriod time.Duration
}

func Configuration

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

func NewConfig

func NewConfig() *Config

Jump to

Keyboard shortcuts

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