Catch timeout setting
This commit is contained in:
parent
3918686f21
commit
10aae376f7
|
@ -14,6 +14,7 @@
|
||||||
:application_version: '2.0'
|
:application_version: '2.0'
|
||||||
:use_chat_info_database: false
|
:use_chat_info_database: false
|
||||||
:use_secret_chats: true
|
:use_secret_chats: true
|
||||||
|
:catch_timeout: 60
|
||||||
|
|
||||||
:xmpp:
|
:xmpp:
|
||||||
:loglevel: :warn
|
:loglevel: :warn
|
||||||
|
|
|
@ -54,6 +54,7 @@ type TelegramTdlibClientConfig struct {
|
||||||
ApplicationVersion string `yaml:":application_version"`
|
ApplicationVersion string `yaml:":application_version"`
|
||||||
UseChatInfoDatabase bool `yaml:":use_chat_info_database"`
|
UseChatInfoDatabase bool `yaml:":use_chat_info_database"`
|
||||||
UseSecretChats bool `yaml:":use_secret_chats"`
|
UseSecretChats bool `yaml:":use_secret_chats"`
|
||||||
|
CatchTimeout int64 `yaml:":catch_timeout"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ReadConfig reads the specified config file, validates it and returns a struct
|
// ReadConfig reads the specified config file, validates it and returns a struct
|
||||||
|
|
|
@ -5,6 +5,7 @@ import (
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strconv"
|
"strconv"
|
||||||
"sync"
|
"sync"
|
||||||
|
"time"
|
||||||
|
|
||||||
"dev.narayana.im/narayana/telegabber/config"
|
"dev.narayana.im/narayana/telegabber/config"
|
||||||
"dev.narayana.im/narayana/telegabber/persistence"
|
"dev.narayana.im/narayana/telegabber/persistence"
|
||||||
|
@ -39,12 +40,12 @@ func stringToLogConstant(c string) int32 {
|
||||||
|
|
||||||
// Client stores the metadata for lazily invoked TDlib instance
|
// Client stores the metadata for lazily invoked TDlib instance
|
||||||
type Client struct {
|
type Client struct {
|
||||||
client *client.Client
|
client *client.Client
|
||||||
authorizer *clientAuthorizer
|
authorizer *clientAuthorizer
|
||||||
parameters *client.TdlibParameters
|
parameters *client.TdlibParameters
|
||||||
logVerbosity client.Option
|
options []client.Option
|
||||||
me *client.User
|
me *client.User
|
||||||
listener *client.Listener
|
listener *client.Listener
|
||||||
|
|
||||||
xmpp *xmpp.Component
|
xmpp *xmpp.Component
|
||||||
jid string
|
jid string
|
||||||
|
@ -61,9 +62,17 @@ type clientLocks struct {
|
||||||
|
|
||||||
// NewClient instantiates a Telegram App
|
// NewClient instantiates a Telegram App
|
||||||
func NewClient(conf config.TelegramConfig, jid string, component *xmpp.Component, session *persistence.Session) (*Client, error) {
|
func NewClient(conf config.TelegramConfig, jid string, component *xmpp.Component, session *persistence.Session) (*Client, error) {
|
||||||
logVerbosity := client.WithLogVerbosity(&client.SetLogVerbosityLevelRequest{
|
var options []client.Option
|
||||||
|
|
||||||
|
options = append(options, client.WithLogVerbosity(&client.SetLogVerbosityLevelRequest{
|
||||||
NewVerbosityLevel: stringToLogConstant(conf.Loglevel),
|
NewVerbosityLevel: stringToLogConstant(conf.Loglevel),
|
||||||
})
|
}))
|
||||||
|
|
||||||
|
if conf.Tdlib.Client.CatchTimeout != 0 {
|
||||||
|
options = append(options, client.WithCatchTimeout(
|
||||||
|
time.Duration(conf.Tdlib.Client.CatchTimeout)*time.Second,
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
apiID, err := strconv.Atoi(conf.Tdlib.Client.APIID)
|
apiID, err := strconv.Atoi(conf.Tdlib.Client.APIID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -103,7 +112,7 @@ func NewClient(conf config.TelegramConfig, jid string, component *xmpp.Component
|
||||||
chats: map[int64]*client.Chat{},
|
chats: map[int64]*client.Chat{},
|
||||||
users: map[int32]*client.User{},
|
users: map[int32]*client.User{},
|
||||||
},
|
},
|
||||||
logVerbosity: logVerbosity,
|
options: options,
|
||||||
locks: clientLocks{},
|
locks: clientLocks{},
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -110,7 +110,7 @@ func (c *Client) Connect() error {
|
||||||
|
|
||||||
c.authorizer.TdlibParameters <- c.parameters
|
c.authorizer.TdlibParameters <- c.parameters
|
||||||
|
|
||||||
tdlibClient, err := client.NewClient(c.authorizer, c.logVerbosity)
|
tdlibClient, err := client.NewClient(c.authorizer, c.options...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "Couldn't initialize a Telegram client instance")
|
return errors.Wrap(err, "Couldn't initialize a Telegram client instance")
|
||||||
}
|
}
|
||||||
|
@ -145,7 +145,7 @@ func (c *Client) Disconnect() {
|
||||||
|
|
||||||
_, err := c.client.Close()
|
_, err := c.client.Close()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Couldn't close the Telegram instance: %#v", c)
|
log.Errorf("Couldn't close the Telegram instance: %v; %#v", err, c)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue