diff options
Diffstat (limited to 'vendor/codeberg.org/gruf/go-structr/queue_ctx.go')
-rw-r--r-- | vendor/codeberg.org/gruf/go-structr/queue_ctx.go | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/vendor/codeberg.org/gruf/go-structr/queue_ctx.go b/vendor/codeberg.org/gruf/go-structr/queue_ctx.go index d8843c1eb..766644c3c 100644 --- a/vendor/codeberg.org/gruf/go-structr/queue_ctx.go +++ b/vendor/codeberg.org/gruf/go-structr/queue_ctx.go @@ -64,6 +64,24 @@ func (q *QueueCtx[T]) Wait() <-chan struct{} { return ctx } +// Debug returns debug stats about queue. +func (q *QueueCtx[T]) Debug() map[string]any { + m := make(map[string]any) + q.mutex.Lock() + m["queue"] = q.queue.len + indices := make(map[string]any) + m["indices"] = indices + for i := range q.indices { + var n uint64 + for _, list := range q.indices[i].data { + n += uint64(list.len) + } + indices[q.indices[i].name] = n + } + q.mutex.Unlock() + return m +} + func (q *QueueCtx[T]) pop(ctx context.Context, next func() *list_elem) (T, bool) { if next == nil { panic("nil fn") |