package mtproto import "github.com/gotd/td/internal/crypto" // Session represents connection state. type Session struct { ID int64 Key crypto.AuthKey Salt int64 } // Session returns current connection session info. func (c *Conn) session() Session { c.updateSalt() c.sessionMux.RLock() defer c.sessionMux.RUnlock() return Session{ Key: c.authKey, Salt: c.salt, ID: c.sessionID, } } // newSessionID sets session id to random value. func (c *Conn) newSessionID() error { id, err := crypto.RandInt64(c.rand) if err != nil { return err } c.sessionMux.Lock() defer c.sessionMux.Unlock() c.sessionID = id return nil }