package peers import ( "context" "sync" "github.com/go-faster/errors" "go.uber.org/zap" "golang.org/x/sync/singleflight" "go.mau.fi/mautrix-telegram/pkg/gotd/tg" ) // Manager is peer manager. // // NB: this package is completely experimental and still WIP. type Manager struct { api *tg.Client storage Storage cache Cache // State of current user. me *atomicUser // needUpdate stores peers what need to be updated. needUpdate peerIDSet needUpdateFull peerIDSet needUpdateMux sync.Mutex // guards needUpdate, needUpdateFull logger *zap.Logger sg singleflight.Group } // Init initializes Manager. func (m *Manager) Init(ctx context.Context) error { _, err := m.Self(ctx) if err != nil { return errors.Wrap(err, "get self") } return nil } // API returns used Client. func (m *Manager) API() *tg.Client { return m.api }