/
init.go
48 lines (39 loc) · 834 Bytes
/
init.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
package telegram
import (
"net"
"sync"
"time"
"go.uber.org/zap"
)
const telegramDialTimeout = 10 * time.Second
var (
Direct Telegram
Middle Telegram
initOnce sync.Once
)
func Init() {
initOnce.Do(func() {
logger := zap.S().Named("telegram")
Direct = &directTelegram{
baseTelegram: baseTelegram{
dialer: net.Dialer{Timeout: telegramDialTimeout},
logger: logger.Named("direct"),
v4DefaultDC: directV4DefaultIdx,
v6DefaultDC: directV6DefaultIdx,
v4Addresses: directV4Addresses,
v6Addresses: directV6Addresses,
},
}
tg := &middleTelegram{
baseTelegram: baseTelegram{
dialer: net.Dialer{Timeout: telegramDialTimeout},
logger: logger.Named("middle"),
},
}
if err := tg.update(); err != nil {
panic(err)
}
go tg.backgroundUpdate()
Middle = tg
})
}