this repo has no description
1package videostream
2
3import (
4 "sync"
5
6 jetstream "github.com/bluesky-social/jetstream/pkg/models"
7)
8
9type Queue struct {
10 lk sync.Mutex
11 events []jetstream.Event
12}
13
14func NewQueue(capacity int) *Queue {
15 return &Queue{
16 events: make([]jetstream.Event, 0, capacity),
17 }
18}
19
20func (q *Queue) Enqueue(event jetstream.Event) {
21 q.lk.Lock()
22 defer q.lk.Unlock()
23
24 q.events = append(q.events, event)
25}
26
27func (q *Queue) Dequeue() (jetstream.Event, bool) {
28 q.lk.Lock()
29 defer q.lk.Unlock()
30
31 if len(q.events) == 0 {
32 var e jetstream.Event
33 return e, false
34 }
35
36 event := q.events[0]
37 q.events = q.events[1:]
38 return event, true
39}
40
41func (q *Queue) Size() int {
42 q.lk.Lock()
43 defer q.lk.Unlock()
44
45 return len(q.events)
46}