Просмотр исходного кода

Some refactorings for telegram package

tags/1.0^2
9seconds 6 лет назад
Родитель
Сommit
3ae69183aa
6 измененных файлов: 45 добавлений и 37 удалений
  1. 1
    1
      cli/proxy.go
  2. 0
    3
      telegram/base.go
  3. 1
    15
      telegram/direct.go
  4. 42
    0
      telegram/init.go
  5. 1
    1
      telegram/interfaces.go
  6. 0
    17
      telegram/middle.go

+ 1
- 1
cli/proxy.go Просмотреть файл

@@ -65,7 +65,7 @@ func Proxy() error {
65 65
 	if err := stats.Init(ctx); err != nil {
66 66
 		Fatal(err)
67 67
 	}
68
-	telegram.MiddleInit()
68
+	telegram.Init()
69 69
 
70 70
 	proxyListener, err := net.Listen("tcp", config.C.Bind.String())
71 71
 	if err != nil {

+ 0
- 3
telegram/base.go Просмотреть файл

@@ -4,15 +4,12 @@ import (
4 4
 	"fmt"
5 5
 	"math/rand"
6 6
 	"net"
7
-	"time"
8 7
 
9 8
 	"github.com/9seconds/mtg/conntypes"
10 9
 	"github.com/9seconds/mtg/utils"
11 10
 	"github.com/9seconds/mtg/wrappers"
12 11
 )
13 12
 
14
-const telegramDialTimeout = 10 * time.Second
15
-
16 13
 type baseTelegram struct {
17 14
 	dialer net.Dialer
18 15
 

+ 1
- 15
telegram/direct.go Просмотреть файл

@@ -1,10 +1,6 @@
1 1
 package telegram
2 2
 
3
-import (
4
-	"net"
5
-
6
-	"github.com/9seconds/mtg/conntypes"
7
-)
3
+import "github.com/9seconds/mtg/conntypes"
8 4
 
9 5
 const (
10 6
 	directV4DefaultIdx conntypes.DC = 1
@@ -43,13 +39,3 @@ func (d *directTelegram) Dial(dc conntypes.DC,
43 39
 
44 40
 	return d.baseTelegram.dial(dc-1, protocol)
45 41
 }
46
-
47
-var Direct = &directTelegram{
48
-	baseTelegram: baseTelegram{
49
-		dialer:      net.Dialer{Timeout: telegramDialTimeout},
50
-		v4DefaultDC: directV4DefaultIdx,
51
-		V6DefaultDC: directV6DefaultIdx,
52
-		v4Addresses: directV4Addresses,
53
-		v6Addresses: directV6Addresses,
54
-	},
55
-}

+ 42
- 0
telegram/init.go Просмотреть файл

@@ -0,0 +1,42 @@
1
+package telegram
2
+
3
+import (
4
+	"net"
5
+	"sync"
6
+	"time"
7
+)
8
+
9
+const telegramDialTimeout = 10 * time.Second
10
+
11
+var (
12
+	Direct Telegram
13
+	Middle Telegram
14
+
15
+	initOnce sync.Once
16
+)
17
+
18
+func Init() {
19
+	initOnce.Do(func() {
20
+		Direct = &directTelegram{
21
+			baseTelegram: baseTelegram{
22
+				dialer:      net.Dialer{Timeout: telegramDialTimeout},
23
+				v4DefaultDC: directV4DefaultIdx,
24
+				V6DefaultDC: directV6DefaultIdx,
25
+				v4Addresses: directV4Addresses,
26
+				v6Addresses: directV6Addresses,
27
+			},
28
+		}
29
+
30
+		tg := &middleTelegram{
31
+			baseTelegram: baseTelegram{
32
+				dialer: net.Dialer{Timeout: telegramDialTimeout},
33
+			},
34
+		}
35
+		if err := tg.update(); err != nil {
36
+			panic(err)
37
+		}
38
+		go tg.backgroundUpdate()
39
+
40
+		Middle = tg
41
+	})
42
+}

+ 1
- 1
telegram/interfaces.go Просмотреть файл

@@ -1,6 +1,6 @@
1 1
 package telegram
2 2
 
3
-import  "github.com/9seconds/mtg/conntypes"
3
+import "github.com/9seconds/mtg/conntypes"
4 4
 
5 5
 type Telegram interface {
6 6
 	Dial(conntypes.DC, conntypes.ConnectionProtocol) (conntypes.StreamReadWriteCloser, error)

+ 0
- 17
telegram/middle.go Просмотреть файл

@@ -2,7 +2,6 @@ package telegram
2 2
 
3 3
 import (
4 4
 	"fmt"
5
-	"net"
6 5
 	"sync"
7 6
 	"time"
8 7
 
@@ -14,8 +13,6 @@ import (
14 13
 
15 14
 const middleTelegramBackgroundUpdateEvery = time.Hour
16 15
 
17
-var Middle Telegram
18
-
19 16
 type middleTelegram struct {
20 17
 	baseTelegram
21 18
 
@@ -76,17 +73,3 @@ func (m *middleTelegram) Dial(dc conntypes.DC,
76 73
 
77 74
 	return m.baseTelegram.dial(dc, protocol)
78 75
 }
79
-
80
-func MiddleInit() {
81
-	tg := &middleTelegram{
82
-		baseTelegram: baseTelegram{
83
-			dialer: net.Dialer{Timeout: telegramDialTimeout},
84
-		},
85
-	}
86
-	if err := tg.update(); err != nil {
87
-		panic(err)
88
-	}
89
-	go tg.backgroundUpdate()
90
-
91
-	Middle = tg
92
-}

Загрузка…
Отмена
Сохранить