package videostream import ( "sync" jetstream "github.com/bluesky-social/jetstream/pkg/models" ) type Queue struct { lk sync.Mutex events []jetstream.Event } func NewQueue(capacity int) *Queue { return &Queue{ events: make([]jetstream.Event, 0, capacity), } } func (q *Queue) Enqueue(event jetstream.Event) { q.lk.Lock() defer q.lk.Unlock() q.events = append(q.events, event) } func (q *Queue) Dequeue() (jetstream.Event, bool) { q.lk.Lock() defer q.lk.Unlock() if len(q.events) == 0 { var e jetstream.Event return e, false } event := q.events[0] q.events = q.events[1:] return event, true } func (q *Queue) Size() int { q.lk.Lock() defer q.lk.Unlock() return len(q.events) }