func WithLeakyBucket() Option {
	return func(options *options) {
		options.leakyBucket = true
	}
}
WithLeakyBucket is used to skip a read lines, when a listener is full.
package tailor
import (
	"io"
	"time"
)
type options struct {
	runOffset int64
	runWhence int
	reopenOffset int64
	reopenWhence int
	bufioReaderPoolSize int
	pollerTimeout       time.Duration
	updateLagInterval   time.Duration
	rateLimiter RateLimiter
	leakyBucket bool
}
func withDefaultOptions() []Option {
	return []Option{
		WithPollerTimeout(10 * time.Millisecond),
		WithReaderInitialPoolSize(4096),
		WithSeekOnStartup(0, io.SeekEnd),
		WithSeekOnReopen(0, io.SeekStart),
		WithUpdateLagInterval(5 * time.Second),
	}
}
type Option func(options *options)
func WithPollerTimeout(duration time.Duration) Option {
	return func(options *options) {
		options.pollerTimeout = duration
	}
}
func WithReaderInitialPoolSize(size int) Option {
	return func(options *options) {
		options.bufioReaderPoolSize = size
	}
}
func WithSeekOnStartup(offset int64, whence int) Option {
	return func(options *options) {
		options.runOffset = offset
		options.runWhence = whence
	}
}
func WithSeekOnReopen(offset int64, whence int) Option {
	return func(options *options) {
		options.reopenOffset = offset
		options.reopenWhence = whence
	}
}
func WithUpdateLagInterval(duration time.Duration) Option {
	return func(options *options) {
		options.updateLagInterval = duration
	}
}
func WithRateLimiter(rl RateLimiter) Option {
	return func(options *options) {
		options.rateLimiter = rl
	}
}