package main

import "github.com/smartystreets/go-disruptor"

func publish(writer *disruptor.Writer) {
	for {
		sequence := writer.Reserve(ItemsToPublish)

		if sequence != disruptor.Gating {
			for lower := sequence - ItemsToPublish; lower < sequence; {
				lower++
				ringBuffer[(lower)&RingMask] = lower
			}

			writer.Commit(sequence)
		}
	}
}
