continuation

package
v1.2.7 Latest Latest
Warning

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

Go to latest
Published: Dec 15, 2019 License: GPL-3.0 Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var AlreadyDoneError = errors.New("already done")

已经执行完成

View Source
var SleepTimeoutError = errors.New("sleep timeout")

休眠超时

Functions

This section is empty.

Types

type Continuation

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

func New

func New() *Continuation

创建分段式函数

func (*Continuation) Call

func (c *Continuation) Call(local interface{}) (*Frame, error)

从头开始执行函数

func (*Continuation) CallFromStep added in v1.0.24

func (c *Continuation) CallFromStep(step int, local interface{}) (*Frame, error)

调用指定分段的函数

func (*Continuation) ContinueSegment added in v1.0.23

func (c *Continuation) ContinueSegment(f SegmentFunc) *Continuation

增加函数分段,每执行完一段会自动执行下一段

func (*Continuation) Dump

func (c *Continuation) Dump(frame *Frame) ([]byte, error)

输出当前执行状态数据

func (*Continuation) NewFrame

func (c *Continuation) NewFrame(step int, local interface{}) *Frame

创建新的帧栈

func (*Continuation) Restore

func (c *Continuation) Restore(data []byte) error

恢复执行状态数据并继续执行

func (*Continuation) Resume

func (c *Continuation) Resume(frame *Frame)

继续执行

func (*Continuation) Segment

func (c *Continuation) Segment(f SegmentFunc) *Continuation

增加函数分段,每执行完一段自动暂停,需要手动 Resume()

func (*Continuation) Sleep

func (c *Continuation) Sleep(frame *Frame) (result interface{}, err error)

休眠

func (*Continuation) SleepWithTimeout added in v1.0.25

func (c *Continuation) SleepWithTimeout(frame *Frame, duration time.Duration) (result interface{}, err error)

休眠,指定一个超时时间,如果超过时间上一分段未执行完则强制放弃

func (*Continuation) Wait

func (c *Continuation) Wait(frame *Frame, checkContinue func(frame *Frame) bool) (status FrameMessage, result interface{}, err error)

等待执行结果,如果 checkContinue 不为空则通过此函数判断是否自动继续执行下一分段(忽略分段原本的continue属性属性)

type Frame

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

帧栈

func (*Frame) IsDone

func (f *Frame) IsDone() bool

是否已执行完成

func (*Frame) Local

func (f *Frame) Local() interface{}

本地变量

func (*Frame) Next

func (f *Frame) Next(value interface{})

执行下一段

func (*Frame) Return

func (f *Frame) Return(value interface{})

返回结果

func (*Frame) Throw

func (f *Frame) Throw(err error)

抛出异常

func (*Frame) Yield

func (f *Frame) Yield(value interface{})

产生结果,下一步继续执行当前段

type FrameMessage

type FrameMessage int
const (
	FrameStatusSleep FrameMessage = iota
	FrameStatusYield
	FrameStatusNext
	FrameStatusReturn
	FrameStatusThrow
)

type Segment

type Segment struct {
	Func     SegmentFunc
	Continue bool
}

函数段

type SegmentFunc added in v1.0.23

type SegmentFunc func(frame *Frame)

函数段

Jump to

Keyboard shortcuts

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