once

package
v0.0.11 Latest Latest
Warning

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

Go to latest
Published: Mar 7, 2024 License: Apache-2.0 Imports: 2 Imported by: 10

Documentation

Overview

Package once contains utilities for managing actions that must be performed exactly once.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Map

type Map sync.Map

Map coordinates actions that must happen exactly once, keyed by user-defined keys.

func (*Map) Do

func (m *Map) Do(key interface{}, do func() error) error

Perform the provided action named by a key. Do invokes the action exactly once for each key, and returns any errors produced by the provided action.

func (*Map) Forget

func (m *Map) Forget(key interface{})

Forget forgets past computations associated with the provided key.

type Task

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

Task manages a computation that must be run at most once. It's similar to sync.Once, except it also handles and returns errors.

func (*Task) Do

func (o *Task) Do(do func() error) error

Do run the function do at most once. Successive invocations of Do guarantee exactly one invocation of the function do. Do returns the error of do's invocation.

func (*Task) Done added in v0.0.11

func (o *Task) Done() bool

Done returns whether the task is done.

func (*Task) Reset added in v0.0.11

func (o *Task) Reset()

Reset resets the task effectively making it possible for `Do` to invoke the underlying do func again. Reset will only reset the task if it was already completed.

Jump to

Keyboard shortcuts

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