Files
upstream-centrifugo/internal/redisqueue/xprending.go
upstream-mirror b352a9a30d
Some checks failed
test / Lint (push) Failing after 3s
test / Test with Go 1.26.8 (push) Failing after 2s
snapshot of https://github.com/centrifugal/centrifugo.git (master, 2026-09-16; blobs > 131072B omitted)
2026-09-16 01:17:21 +05:00

61 lines
1.2 KiB
Go

package redisqueue
import (
"fmt"
"time"
"github.com/redis/rueidis"
)
type XPendingExt struct {
ID string
Consumer string
Idle time.Duration
RetryCount int64
}
type XPendingExtCmd struct {
Err error
Val []XPendingExt
}
func NewXPendingExtCmd(res rueidis.RedisResult) *XPendingExtCmd {
arrs, err := res.ToArray()
if err != nil {
return &XPendingExtCmd{Err: err}
}
val := make([]XPendingExt, 0, len(arrs))
for _, v := range arrs {
arr, err := v.ToArray()
if err != nil {
return &XPendingExtCmd{Err: err}
}
if len(arr) < 4 {
return &XPendingExtCmd{Err: fmt.Errorf("got %d, wanted 4", len(arr))}
}
id, err := arr[0].ToString()
if err != nil {
return &XPendingExtCmd{Err: err}
}
consumer, err := arr[1].ToString()
if err != nil {
return &XPendingExtCmd{Err: err}
}
idle, err := arr[2].AsInt64()
if err != nil {
return &XPendingExtCmd{Err: err}
}
retryCount, err := arr[3].AsInt64()
if err != nil {
return &XPendingExtCmd{Err: err}
}
val = append(val, XPendingExt{
ID: id,
Consumer: consumer,
Idle: time.Duration(idle) * time.Millisecond,
RetryCount: retryCount,
})
}
return &XPendingExtCmd{Val: val, Err: err}
}