da689412a1
Signed-off-by: Vartan Benohanian <vartanbeno@gmail.com>
44 lines
1.1 KiB
Go
44 lines
1.1 KiB
Go
package reddit
|
|
|
|
import "time"
|
|
|
|
const defaultStreamInterval = time.Second * 5
|
|
|
|
type streamConfig struct {
|
|
Interval time.Duration
|
|
DiscardInitial bool
|
|
MaxRequests int
|
|
}
|
|
|
|
// StreamOpt is a configuration option to configure a stream.
|
|
type StreamOpt func(*streamConfig)
|
|
|
|
// StreamInterval sets the frequency at which data will be fetched for the stream.
|
|
// If the duration is 0 or less, it will not be set and the default will be used.
|
|
func StreamInterval(v time.Duration) StreamOpt {
|
|
return func(c *streamConfig) {
|
|
if v > 0 {
|
|
c.Interval = v
|
|
}
|
|
}
|
|
}
|
|
|
|
// StreamDiscardInitial will discard data from the first fetch for the stream.
|
|
func StreamDiscardInitial(c *streamConfig) {
|
|
c.DiscardInitial = true
|
|
}
|
|
|
|
// StreamMaxRequests sets a limit on the number of times data is fetched for a stream.
|
|
// If less than or equal to 0, it is assumed to be infinite.
|
|
func StreamMaxRequests(v int) StreamOpt {
|
|
return func(c *streamConfig) {
|
|
if v > 0 {
|
|
c.MaxRequests = v
|
|
}
|
|
}
|
|
}
|
|
|
|
// Streamer streams data to the client.
|
|
// type Streamer interface {
|
|
// Stream() (<-chan *rootListing, <-chan error, func())
|
|
// }
|