event_queue.go 414 B

12345678910111213141516171819202122232425
  1. package store
  2. type eventQueue struct {
  3. Events []*Event
  4. Size int
  5. Front int
  6. Capacity int
  7. }
  8. func (eq *eventQueue) back() int {
  9. return (eq.Front + eq.Size - 1 + eq.Capacity) % eq.Capacity
  10. }
  11. func (eq *eventQueue) insert(e *Event) {
  12. index := (eq.back() + 1) % eq.Capacity
  13. eq.Events[index] = e
  14. if eq.Size == eq.Capacity { //dequeue
  15. eq.Front = (index + 1) % eq.Capacity
  16. } else {
  17. eq.Size++
  18. }
  19. }