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,31 @@
|
||||
// Package clock abstracts time source.
|
||||
package clock
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/gotd/neo"
|
||||
)
|
||||
|
||||
// Clock is current time source.
|
||||
type Clock interface {
|
||||
Now() time.Time
|
||||
Timer(d time.Duration) Timer
|
||||
Ticker(d time.Duration) Ticker
|
||||
}
|
||||
|
||||
// Timer abstracts a single event.
|
||||
type Timer = neo.Timer
|
||||
|
||||
// StopTimer stops timer and drains timer channel if Stop() returned false.
|
||||
func StopTimer(t Timer) {
|
||||
if !t.Stop() {
|
||||
select {
|
||||
case <-t.C():
|
||||
default:
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Ticker abstracts a channel that delivers “ticks” of a clock at intervals.
|
||||
type Ticker = neo.Ticker
|
||||
@@ -0,0 +1,50 @@
|
||||
package clock
|
||||
|
||||
import "time"
|
||||
|
||||
type systemTimer struct {
|
||||
timer *time.Timer
|
||||
}
|
||||
|
||||
func (s systemTimer) C() <-chan time.Time {
|
||||
return s.timer.C
|
||||
}
|
||||
|
||||
func (s systemTimer) Reset(d time.Duration) {
|
||||
s.timer.Reset(d)
|
||||
}
|
||||
|
||||
func (s systemTimer) Stop() bool {
|
||||
return s.timer.Stop()
|
||||
}
|
||||
|
||||
type systemTicker struct {
|
||||
ticker *time.Ticker
|
||||
}
|
||||
|
||||
func (s systemTicker) C() <-chan time.Time {
|
||||
return s.ticker.C
|
||||
}
|
||||
|
||||
func (s systemTicker) Stop() {
|
||||
s.ticker.Stop()
|
||||
}
|
||||
|
||||
func (s systemTicker) Reset(d time.Duration) {
|
||||
s.ticker.Reset(d)
|
||||
}
|
||||
|
||||
type systemClock struct{}
|
||||
|
||||
func (clock systemClock) Ticker(d time.Duration) Ticker {
|
||||
return systemTicker{ticker: time.NewTicker(d)}
|
||||
}
|
||||
|
||||
func (systemClock) Timer(d time.Duration) Timer {
|
||||
return systemTimer{timer: time.NewTimer(d)}
|
||||
}
|
||||
|
||||
func (systemClock) Now() time.Time { return time.Now() }
|
||||
|
||||
// System Clock.
|
||||
var System Clock = systemClock{}
|
||||
Reference in New Issue
Block a user