Files
mautrix-telegram/pkg/gotd/telegram/peers/manager.go
T
2025-06-27 20:03:37 -07:00

47 lines
864 B
Go

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
}