statemanager

package
v0.0.3 Latest Latest
Warning

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

Go to latest
Published: Feb 19, 2015 License: Apache-2.0, BSD-2-Clause, BSD-3-Clause, + 1 more Imports: 10 Imported by: 0

Documentation

Overview

Package statemanager implements simple constructs for saving and restoring state from disk. It provides the interface for a StateManager which can read/write arbitrary json data from/to disk.

Index

Constants

View Source
const EcsDataVersion = 1

The current version of saved data. Any backwards or forwards incompatible changes to the data-format should increment this number and retain the ability to read old data versions.

Variables

This section is empty.

Functions

This section is empty.

Types

type ForceSaver

type ForceSaver interface {
	ForceSave() error
}

ForceSaver is a StateManager that supports forcible saving

type NoopStateManager

type NoopStateManager struct{}

NoopStateManager is a state manager that succeeds for all reads/writes without even trying; it allows disabling of state serialization by being a drop-in replacement so no other code need be concerned with it.

func (*NoopStateManager) Load

func (nsm *NoopStateManager) Load() error

Load does nothing, successfully

func (*NoopStateManager) Save

func (nsm *NoopStateManager) Save() error

Save does nothing, successfully

type Option

type Option func(StateManager)

Option functions are functions that may be used as part of constructing a new StateManager

func AddSaveable

func AddSaveable(name string, saveable Saveable) Option

AddSaveable is an option that adds a given saveable as one that should be saved under the given name. The name must be the same across uses of the statemanager (e.g. program invocations) for it to be serialized and deserialized correctly.

type Saveable

type Saveable interface{}

Saveable types should be able to be json serializable and deserializable Properly, this should have json.Marshaler/json.Unmarshaler here, but string and so on can be marshaled/unmarshaled sanely but don't fit those interfaces.

type Saver

type Saver interface {
	Save() error
}

Saver is a type that can be saved and returns an (optional) error.

type StateManager

type StateManager interface {
	Save() error
	Load() error
}

A StateManager can load and save state from disk. Load is not expected to return an error if there is no state to load.

func NewNoopStateManager

func NewNoopStateManager() StateManager

NewNoopStateManager constructs a state manager

func NewStateManager

func NewStateManager(cfg *config.Config, options ...Option) (StateManager, error)

NewStateManager constructs a new StateManager which saves data at the location specified in cfg and operates under the given options. The returned StateManager will not save more often than every 10 seconds and will not reliably return errors with Save, but will log them appropriately.

Jump to

Keyboard shortcuts

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