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

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
 	if err := stats.Init(ctx); err != nil {
65
 	if err := stats.Init(ctx); err != nil {
66
 		Fatal(err)
66
 		Fatal(err)
67
 	}
67
 	}
68
-	telegram.MiddleInit()
68
+	telegram.Init()
69
 
69
 
70
 	proxyListener, err := net.Listen("tcp", config.C.Bind.String())
70
 	proxyListener, err := net.Listen("tcp", config.C.Bind.String())
71
 	if err != nil {
71
 	if err != nil {

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

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

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

1
 package telegram
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
 const (
5
 const (
10
 	directV4DefaultIdx conntypes.DC = 1
6
 	directV4DefaultIdx conntypes.DC = 1
43
 
39
 
44
 	return d.baseTelegram.dial(dc-1, protocol)
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 Просмотреть файл

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

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

2
 
2
 
3
 import (
3
 import (
4
 	"fmt"
4
 	"fmt"
5
-	"net"
6
 	"sync"
5
 	"sync"
7
 	"time"
6
 	"time"
8
 
7
 
14
 
13
 
15
 const middleTelegramBackgroundUpdateEvery = time.Hour
14
 const middleTelegramBackgroundUpdateEvery = time.Hour
16
 
15
 
17
-var Middle Telegram
18
-
19
 type middleTelegram struct {
16
 type middleTelegram struct {
20
 	baseTelegram
17
 	baseTelegram
21
 
18
 
76
 
73
 
77
 	return m.baseTelegram.dial(dc, protocol)
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
-}

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