alarm

package
v0.1.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 26, 2021 License: AGPL-3.0 Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewFakeAlarm added in v0.0.15

func NewFakeAlarm(chanSize int, opts ...Option) (Alarm, FakeAlarmController)

NewFakeAlarm creates a fake alarm replacement where an event is resend each time FakeAlarmController.Tick() is called.

Types

type Alarm

type Alarm struct {
	Send    chan<- Event
	Receive <-chan Event
}

Alarm resends events at the requested time, or later. Closing the Send channel asks the alarm to terminate, which is notified by closing Receive.

func New

func New(chanSize int, opts ...Option) Alarm

New creates a new Alarm with the given size for Send. Receive is always unbuffered. Thus, settings chanSize to zero may result in deadlocks.

type Event

type Event struct {
	Time time.Time
	Data interface{}
	// Before resending the event, Remaining is set by Alarm to the number of remaining waiting events.
	Remaining int
}

type FakeAlarmController added in v0.0.15

type FakeAlarmController interface {
	// Tick asks the fake alarm to send its most recent event.
	Tick()

	Close()

	QueueLength() int
}

FakeAlarmController allows to control a fake alarm returned by NewFakeAlarm.

type Option added in v0.0.7

type Option func(evt *alarmLogic)
var (
	// Events received by Alarm with Time greater than any waiting event are ignored.
	DiscardLaterEvent Option = func(evt *alarmLogic) {
		evt.discardLaterEvent = true
	}

	// Event received with same Data as any waiting event are ignored.
	DiscardDuplicates Option = func(evt *alarmLogic) {
		evt.discardDuplicates = true
	}

	// Event received with same Data and later Time than some waiting event are ignored.
	DiscardLateDuplicates Option = func(evt *alarmLogic) {
		evt.discardLateDuplicates = true
	}
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL