listener

package
v1.5.7 Latest Latest
Warning

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

Go to latest
Published: Oct 24, 2023 License: MIT Imports: 12 Imported by: 0

README

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

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

type Listener interface {
	io.Closer
	Accept() (net.Conn, error)
}
Объект конфигурации.
type Config struct {
	Protocol  string
	Interface string
	Port      uint16
}

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

Поле Описание Значение по умолчанию Доступные значения
Protocol Протокол прослушивания socket сервером, этот параметр может быть передан одним из 3-х методов:
- флаг командной строки --server.socket.protocol
- переменная окружения SERVER_SOCKET_PROTOCOL
- значение в конфиг файле server.socket.protocol
tcp tcp, udp
Interface Интерфейс прослушивания socket сервером, этот параметр может быть передан одним из 3-х методов:
- флаг командной строки --server.socket.interface
- переменная окружения SERVER_SOCKET_INTERFACE
- значение в конфиг файле server.socket.interface
0.0.0.0
Port Порт прослушивания socket сервером, этот параметр может быть передан одним из 3-х методов:
- флаг командной строки --server.socket.port
- переменная окружения SERVER_SOCKET_PORT
- значение в конфиг файле server.socket.port
8081

В GoLang листенер для протокола UDP в отличие от листенера для протокола TCP, не реализует интерфейс net.Listener, поэтому пакет listener предоставляет свою реализацию интерфейса net.Listener для протокола UDP.

Documentation

Index

Constants

View Source
const (
	ProtocolFieldName  = "server.socket.protocol"
	InterfaceFieldName = "server.socket.interface"
	PortFieldName      = "server.socket.port"

	ProtocolTCP = "tcp"
	ProtocolUDP = "udp"

	ProtocolDefault  = ProtocolTCP
	InterfaceDefault = "0.0.0.0"
	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(
				"listening protocol. Availability protocols [%s]",
				strings.Join([]string{ProtocolTCP, ProtocolUDP}, ","),
			))
			flagSet.StringVar(&config.Interface, InterfaceFieldName, InterfaceDefault, "listening interface")
			flagSet.Uint16Var(&config.Port, PortFieldName, PortDefault, "listening port")
		})
	},
}

Functions

func NewTCP

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

func NewUdpConnection

func NewUdpConnection(buffer []byte, localAddr *net.UDPAddr, remoteAddr *net.UDPAddr) net.Conn

Types

type Config

type Config struct {
	Protocol  string
	Interface string
	Port      uint16
}

func Configuration

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

func NewConfig

func NewConfig() *Config

type Listener

type Listener interface {
	io.Closer
	Accept() (net.Conn, error)
}

func New

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

func NewWithConfigurator

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

type UDP

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

func NewUDP

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

func (*UDP) Accept

func (listener *UDP) Accept() (net.Conn, error)

func (*UDP) Close

func (listener *UDP) Close() error

Jump to

Keyboard shortcuts

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