From 24f175df385466e04ef21d153713d2ecf3a9733b Mon Sep 17 00:00:00 2001 From: Mel Date: Fri, 8 Apr 2022 12:54:09 +0200 Subject: Subdivide discord into packages --- pkg/discord/heartbeat.go | 71 ------------------------------------------------ 1 file changed, 71 deletions(-) delete mode 100644 pkg/discord/heartbeat.go (limited to 'pkg/discord/heartbeat.go') diff --git a/pkg/discord/heartbeat.go b/pkg/discord/heartbeat.go deleted file mode 100644 index 5c4a955..0000000 --- a/pkg/discord/heartbeat.go +++ /dev/null @@ -1,71 +0,0 @@ -package discord - -import ( - "context" - "math/rand" - "time" - - "github.com/rs/zerolog" -) - -type Heartbeat interface { - Start(ctx context.Context, interval uint64) - - ForceHeartbeat() - Ack() -} - -var _ Heartbeat = &HeartbeatImpl{} - -type HeartbeatImpl struct { - ctx context.Context - logger *zerolog.Logger - gateway Gateway -} - -func NewHeartbeat(logger *zerolog.Logger, gateway Gateway) *HeartbeatImpl { - return &HeartbeatImpl{ - ctx: nil, - logger: logger, - gateway: gateway, - } -} - -func (h *HeartbeatImpl) Start(ctx context.Context, interval uint64) { - h.ctx = ctx - go h.heartbeatRoutine(interval) -} - -func (h *HeartbeatImpl) ForceHeartbeat() { - h.gateway.Heartbeat() -} - -func (h *HeartbeatImpl) Ack() { - // What do we do here? - h.logger.Debug().Msg("received heartbeat ack") -} - -func (h *HeartbeatImpl) heartbeatRoutine(interval uint64) { - h.logger.Debug().Msgf("beating heart every %dms", interval) - - // REF: heartbeat_interval * jitter - jitter := rand.Intn(int(interval)) - time.Sleep(time.Duration(jitter) * time.Millisecond) - - ticker := time.NewTicker(time.Duration(interval) * time.Millisecond) - defer ticker.Stop() - - for { - h.logger.Debug().Msg("sending heartbeat") - if err := h.gateway.Heartbeat(); err != nil { - h.logger.Error().Err(err).Msg("failed to send heartbeat") - } - - select { - case <-h.ctx.Done(): - return - case <-ticker.C: - continue - } - } -} -- cgit 1.4.1