this repo has no description
at master 716 B view raw
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}