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

Set buffer sizes to sockets

tags/0.9
9seconds 7 лет назад
Родитель
Сommit
fb00cd1121
3 измененных файлов: 29 добавлений и 23 удалений
  1. 14
    3
      client/direct.go
  2. 0
    17
      config/config.go
  3. 15
    3
      telegram/dialer.go

+ 14
- 3
client/direct.go Просмотреть файл

12
 	"github.com/9seconds/mtg/wrappers"
12
 	"github.com/9seconds/mtg/wrappers"
13
 )
13
 )
14
 
14
 
15
-const handshakeTimeout = 10 * time.Second
15
+const (
16
+	handshakeTimeout = 10 * time.Second
17
+	readBufferSize   = 64 * 1024
18
+	writeBufferSize  = 64 * 1024
19
+)
16
 
20
 
17
 func DirectInit(socket net.Conn, connID string, conf *config.Config) (wrappers.Wrap, *mtproto.ConnectionOpts, error) {
21
 func DirectInit(socket net.Conn, connID string, conf *config.Config) (wrappers.Wrap, *mtproto.ConnectionOpts, error) {
18
-	if err := config.SetSocketOptions(socket); err != nil {
19
-		return nil, nil, errors.Annotate(err, "Cannot set socket options")
22
+	tcpSocket := socket.(*net.TCPConn)
23
+	if err := tcpSocket.SetNoDelay(false); err != nil {
24
+		return nil, nil, errors.Annotate(err, "Cannot disable NO_DELAY to client socket")
25
+	}
26
+	if err := tcpSocket.SetReadBuffer(readBufferSize); err != nil {
27
+		return nil, nil, errors.Annotate(err, "Cannot set read buffer size of client socket")
28
+	}
29
+	if err := tcpSocket.SetWriteBuffer(writeBufferSize); err != nil {
30
+		return nil, nil, errors.Annotate(err, "Cannot set write buffer size of client socket")
20
 	}
31
 	}
21
 
32
 
22
 	socket.SetReadDeadline(time.Now().Add(handshakeTimeout))
33
 	socket.SetReadDeadline(time.Now().Add(handshakeTimeout))

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

149
 
149
 
150
 	return conf, nil
150
 	return conf, nil
151
 }
151
 }
152
-
153
-// SetSocketOptions makes socket keepalive, sets buffer sizes
154
-func SetSocketOptions(conn net.Conn) error {
155
-	socket := conn.(*net.TCPConn)
156
-
157
-	if err := socket.SetReadBuffer(BufferReadSize); err != nil {
158
-		return errors.Annotate(err, "Cannot set read buffer size")
159
-	}
160
-	if err := socket.SetWriteBuffer(BufferWriteSize); err != nil {
161
-		return errors.Annotate(err, "Cannot set write buffer size")
162
-	}
163
-	if err := socket.SetNoDelay(true); err != nil {
164
-		return errors.Annotate(err, "Cannot activate nodelay for the socket")
165
-	}
166
-
167
-	return nil
168
-}

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

10
 	"github.com/9seconds/mtg/wrappers"
10
 	"github.com/9seconds/mtg/wrappers"
11
 )
11
 )
12
 
12
 
13
-const telegramDialTimeout = 10 * time.Second
13
+const (
14
+	telegramDialTimeout = 10 * time.Second
15
+	readBufferSize      = 64 * 1024
16
+	writeBufferSize     = 64 * 1024
17
+)
14
 
18
 
15
 type tgDialer struct {
19
 type tgDialer struct {
16
 	net.Dialer
20
 	net.Dialer
23
 	if err != nil {
27
 	if err != nil {
24
 		return nil, errors.Annotate(err, "Cannot connect to Telegram")
28
 		return nil, errors.Annotate(err, "Cannot connect to Telegram")
25
 	}
29
 	}
26
-	if err = config.SetSocketOptions(conn); err != nil {
27
-		return nil, errors.Annotate(err, "Cannot set socket options")
30
+
31
+	tcpSocket := conn.(*net.TCPConn)
32
+	if err = tcpSocket.SetNoDelay(true); err != nil {
33
+		return nil, errors.Annotate(err, "Cannot set NO_DELAY to Telegram")
34
+	}
35
+	if err = tcpSocket.SetReadBuffer(readBufferSize); err != nil {
36
+		return nil, errors.Annotate(err, "Cannot set read buffer size on telegram socket")
37
+	}
38
+	if err = tcpSocket.SetWriteBuffer(writeBufferSize); err != nil {
39
+		return nil, errors.Annotate(err, "Cannot set write buffer size on telegram socket")
28
 	}
40
 	}
29
 
41
 
30
 	return conn, nil
42
 	return conn, nil

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