type Inflights … // NewInflights sets up an Inflights that allows up to 'size' inflight messages. func NewInflights(size int) *Inflights { … } // Clone returns an *Inflights that is identical to but shares no memory with // the receiver. func (in *Inflights) Clone() *Inflights { … } // Add notifies the Inflights that a new message with the given index is being // dispatched. Full() must be called prior to Add() to verify that there is room // for one more message, and consecutive calls to add Add() must provide a // monotonic sequence of indexes. func (in *Inflights) Add(inflight uint64) { … } // grow the inflight buffer by doubling up to inflights.size. We grow on demand // instead of preallocating to inflights.size to handle systems which have // thousands of Raft groups per process. func (in *Inflights) grow() { … } // FreeLE frees the inflights smaller or equal to the given `to` flight. func (in *Inflights) FreeLE(to uint64) { … } // FreeFirstOne releases the first inflight. This is a no-op if nothing is // inflight. func (in *Inflights) FreeFirstOne() { … } // Full returns true if no more messages can be sent at the moment. func (in *Inflights) Full() bool { … } // Count returns the number of inflight messages. func (in *Inflights) Count() int { … } // reset frees all inflights. func (in *Inflights) reset() { … }