You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
648 B
37 lines
648 B
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 |
|
}
|
|
|