Highly-opinionated (ex-bullshit-free) MTPROTO proxy for Telegram. If you use v1.0 or upgrade broke you proxy, please read the chapter Version 2
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

timeout.go 1.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package wrappers
  2. import (
  3. "net"
  4. "time"
  5. "go.uber.org/zap"
  6. "github.com/9seconds/mtg/conntypes"
  7. )
  8. const (
  9. timeoutRead = 2 * time.Minute
  10. timeoutWrite = 2 * time.Minute
  11. )
  12. type wrapperTimeout struct {
  13. parent conntypes.StreamReadWriteCloser
  14. }
  15. func (w *wrapperTimeout) WriteTimeout(p []byte, timeout time.Duration) (int, error) {
  16. return w.parent.WriteTimeout(p, timeout)
  17. }
  18. func (w *wrapperTimeout) Write(p []byte) (int, error) {
  19. return w.parent.WriteTimeout(p, timeoutWrite)
  20. }
  21. func (w *wrapperTimeout) ReadTimeout(p []byte, timeout time.Duration) (int, error) {
  22. return w.parent.ReadTimeout(p, timeout)
  23. }
  24. func (w *wrapperTimeout) Read(p []byte) (int, error) {
  25. return w.parent.ReadTimeout(p, timeoutRead)
  26. }
  27. func (w *wrapperTimeout) Close() error {
  28. return w.parent.Close()
  29. }
  30. func (w *wrapperTimeout) Conn() net.Conn {
  31. return w.parent.Conn()
  32. }
  33. func (w *wrapperTimeout) Logger() *zap.SugaredLogger {
  34. return w.parent.Logger().Named("timeout")
  35. }
  36. func (w *wrapperTimeout) LocalAddr() *net.TCPAddr {
  37. return w.parent.LocalAddr()
  38. }
  39. func (w *wrapperTimeout) RemoteAddr() *net.TCPAddr {
  40. return w.parent.RemoteAddr()
  41. }
  42. func NewTimeout(parent conntypes.StreamReadWriteCloser) conntypes.StreamReadWriteCloser {
  43. return &wrapperTimeout{
  44. parent: parent,
  45. }
  46. }