package main

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

func publish(writer *disruptor.SharedWriter) {

	for {
		// TODO: return lower, upper instead? or some kind of struct "Reservation"
		// upon which commit can be invoked?
		if sequence := writer.Reserve(ItemsToPublish); sequence != disruptor.Gating {
			for lower := sequence - ItemsToPublish; lower < sequence; {
				lower++
				ringBuffer[(lower)&RingMask] = lower
			}
			// ringBuffer[sequence&RingMask] = sequence
			writer.Commit(sequence-ItemsToPublish+1, sequence)
		}
	}
}
