schedule

package
v0.0.0-...-bfa9622 Latest Latest
Warning

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

Go to latest
Published: Apr 24, 2024 License: AGPL-3.0 Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Schedule

type Schedule struct {
	// contains filtered or unexported fields
}

Schedule provides a schedule for storage operations, with the following properties:

  • fast to add and remove items by key: O(log(n)); n is the total number of items
  • fast to identify/remove the next scheduled item: O(log(n))

func NewSchedule

func NewSchedule(clock clock.Clock) *Schedule

NewSchedule constructs a new schedule, using the given Clock for the Next method.

func (*Schedule) Add

func (s *Schedule) Add(key, value interface{}, t time.Time)

Add adds an item with the specified value, with the corresponding key and time to the schedule. Add will panic if there already exists an item with the same key.

func (*Schedule) Next

func (s *Schedule) Next() <-chan time.Time

Next returns a channel which will send after the next scheduled item's time has been reached. If there are no scheduled items, nil is returned.

func (*Schedule) Ready

func (s *Schedule) Ready(now time.Time) []interface{}

Ready returns the parameters for items that are scheduled at or before "now", and removes them from the schedule. The resulting slices are in order of time; items scheduled for the same time have no defined relative order.

func (*Schedule) Remove

func (s *Schedule) Remove(key interface{})

Remove removes the item corresponding to the specified key from the schedule. If no item with the specified key exists, this is a no-op.

Jump to

Keyboard shortcuts

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