action

package
v0.7.0 Latest Latest
Warning

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

Go to latest
Published: Jan 14, 2016 License: MIT Imports: 3 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrRollbackFailed = errs.NewError(
	"Roll back changes", errors.New("failed to roll back changes"))
View Source
var Noop = ActionFunc(func() error { return nil })

Functions

func RollbackOnError

func RollbackOnError(err *error, action Action)

RollbackOnError is equivalent to RollbackTaskOnError(err, "", action).

func RollbackTaskOnError

func RollbackTaskOnError(err *error, task string, action Action)

RollbackTaskOnError wraps an ActionChain to perform a rollback on error.

Types

type Action

type Action interface {
	Rollback() error
}

type ActionChain

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

func NewActionChain

func NewActionChain() *ActionChain

func (*ActionChain) Push

func (chain *ActionChain) Push(action Action)

func (*ActionChain) PushTask

func (chain *ActionChain) PushTask(task string, action Action)

func (*ActionChain) Rollback

func (chain *ActionChain) Rollback() error

func (*ActionChain) RollbackOnError

func (chain *ActionChain) RollbackOnError(err *error)

RollbackOnError is supposed to be called using defer:

defer chain.RollbackOnError(&err)

Then it is visible why *error is being passed in. The args are bound when this line is encountered, so it would not be set to a non-nil error in case the error is set later. That is why we pass a pointer so that err can be checked when the deferred function is actually called.

type ActionFunc

type ActionFunc func() error

func (ActionFunc) Rollback

func (action ActionFunc) Rollback() error

Jump to

Keyboard shortcuts

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