-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtypes.go
53 lines (46 loc) · 2.73 KB
/
types.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package net
import (
"net"
"os"
"sync"
"sync/atomic"
)
const (
netUdp = "udp"
netUdp4 = "udp4"
netUdp6 = "udp6"
netUnixgram = "unixgram"
netTcp = "tcp"
netTcp4 = "tcp4"
netTcp6 = "tcp6"
netUnix = "unix"
netUnixPacket = "unixpacket"
netSocket = "socket"
netSystemd = "systemd"
)
const defaultSocketFileMode = 0666
// Объект сущности, реализующий интерфейс Interface.
type impl struct {
lck *sync.Mutex // Защита от гонки.
err error // Сохранение последней ошибки.
isRun *atomic.Bool // Состояние выполнения сервера, =истина - запущен, =ложь - остановлен.
handler HandlerFn // Основная функция TCP сервера.
handlerUdp HandlerUdpFn // Основная функция UDP сервера.
listener *netListener // Слушатель сокета сервера содержащий либо UDP либо TCP соединение.
isShutdown *atomic.Bool // Флаг начала завершения работы сервера.
onShutdown chan struct{} // Канал передачи сигнала об окончании завершения работы сервера.
conf *Configuration // Конфигурация сервера.
fnFl func(*os.File) (net.Listener, error) // Функция net.FileListener, подменяемая при тестировании.
fnNf func(uintptr, string) *os.File // Функция os.NewFile, подменяемая при тестировании.
fnFc func(*os.File) error // Функция закрытия файлового дескриптора, подменяемая при тестировании.
}
// HandlerFn Описание типа функции TCP или сокет сервера.
type HandlerFn func(net.Listener) error
// HandlerUdpFn Описание типа функции UDP или сервера пакетов.
type HandlerUdpFn func(net.PacketConn) error
// Значения переменных systemd, загружаемые из окружения.
type listenEnv struct {
pid int // ID процесса, получающего открытые соединения через файловые дескрипторы.
fds int // Количество передаваемых соединений.
names []string // Имена файловых дескрипторов.
}