move gotd fork into repo. (#111)

- update to latest telegram layer
- remove some references to fields in tg.Entities that don't exist in
the schema
- originally added here:
https://github.com/beeper/td/commit/820929062a2ba0104397bc01235ab58a9cff780e
  - referenced here
-
https://github.com/mautrix/telegramgo/commit/124f0967ed195b5a380c9bd02e170ada9710dde3
-
https://github.com/mautrix/telegramgo/commit/4205047aab2e0639217148b5d125bfaab668bd8e
This commit is contained in:
Adam Van Ymeren
2025-06-27 20:03:37 -07:00
committed by GitHub
parent 0952df0244
commit 7a04f298d2
19264 changed files with 1539697 additions and 84 deletions
+54
View File
@@ -0,0 +1,54 @@
package updates
import "go.uber.org/zap/zapcore"
type gap struct {
from, to int
}
type gapBuffer struct {
gaps []gap
}
func (b gapBuffer) Has() bool { return len(b.gaps) > 0 }
func (b *gapBuffer) Clear() { b.gaps = make([]gap, 0, 1) }
func (b *gapBuffer) Enable(from, to int) {
if len(b.gaps) > 0 {
panic("unreachable")
}
b.gaps = append(b.gaps, gap{from, to})
}
func (b *gapBuffer) Consume(u update) (accepted bool) {
for i, g := range b.gaps {
if g.from <= u.start() && g.to >= u.end() {
if g.from < u.start() {
b.gaps = append(b.gaps, gap{from: g.from, to: u.start()})
}
if g.to > u.end() {
b.gaps = append(b.gaps, gap{from: u.end(), to: g.to})
}
b.gaps = append(b.gaps[:i], b.gaps[i+1:]...)
return true
}
}
return false
}
func (b gapBuffer) MarshalLogArray(e zapcore.ArrayEncoder) error {
for _, g := range b.gaps {
if err := e.AppendObject(zapcore.ObjectMarshalerFunc(func(e zapcore.ObjectEncoder) error {
e.AddInt("from", g.from)
e.AddInt("to", g.to)
return nil
})); err != nil {
return err
}
}
return nil
}