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:
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user