wasm

package
v0.0.19 Latest Latest
Warning

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

Go to latest
Published: Aug 23, 2022 License: Apache-2.0 Imports: 13 Imported by: 8

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Heap

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

func NewHeap

func NewHeap(memory *wasmtime.Memory, allocator, dealloc *wasmtime.Func, store *wasmtime.Store) *Heap

func (*Heap) Clear added in v0.0.19

func (h *Heap) Clear() error

func (*Heap) ReadBytes

func (h *Heap) ReadBytes(ptr int32, length int32) []byte

func (*Heap) ReadString

func (h *Heap) ReadString(ptr int32, length int32) string

func (*Heap) Write

func (h *Heap) Write(bytes []byte, from string) (int32, error)

func (*Heap) WriteAndTrack added in v0.0.19

func (h *Heap) WriteAndTrack(bytes []byte, track bool, from string) (int32, error)

func (*Heap) WriteAtPtr

func (h *Heap) WriteAtPtr(bytes []byte, ptr int32, from string) (int32, error)

type Input

type Input struct {
	Type InputType
	Name string

	// Transient data between calls
	StreamData []byte

	// InputType == InputStore || OutputStore
	Store  *state.Store
	Deltas bool // whether we want to have the Deltas instead of an access to the store

	// If InputType == OutputStore
	UpdatePolicy pbsubstreams.Module_KindStore_UpdatePolicy
	ValueType    string
}

type InputType

type InputType int
const (
	InputSource InputType = iota
	InputStore
	OutputStore
)

type Instance

type Instance struct {
	Logs           []string
	LogsByteCount  uint64
	ExecutionStack []string
	Module         *Module
	// contains filtered or unexported fields
}

func (*Instance) Err

func (i *Instance) Err() error

func (*Instance) Execute

func (i *Instance) Execute() (err error)

func (*Instance) ExecuteWithArgs

func (i *Instance) ExecuteWithArgs(args ...interface{}) (err error)

func (*Instance) Output

func (i *Instance) Output() []byte

func (*Instance) PushExecutionStack added in v0.0.19

func (i *Instance) PushExecutionStack(event string)

func (*Instance) ReachedLogsMaxByteCount

func (i *Instance) ReachedLogsMaxByteCount() bool

func (*Instance) SetOutputStore

func (i *Instance) SetOutputStore(store *state.Store)

func (*Instance) WriteOutputToHeap

func (i *Instance) WriteOutputToHeap(outputPtr int32, value []byte, from string) error

type Module

type Module struct {
	CurrentInstance *Instance

	Heap *Heap
	// contains filtered or unexported fields
}

func (*Module) NewInstance

func (m *Module) NewInstance(clock *pbsubstreams.Clock, inputs []*Input) (*Instance, error)

type PanicError

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

func (*PanicError) Error

func (e *PanicError) Error() string

type Runtime

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

func NewRuntime

func NewRuntime(extensions []WASMExtensioner) *Runtime

func (*Runtime) NewModule

func (r *Runtime) NewModule(ctx context.Context, request *pbsubstreams.Request, wasmCode []byte, name string, entrypoint string) (*Module, error)

type WASMExtension

type WASMExtension func(ctx context.Context, request *pbsubstreams.Request, clock *pbsubstreams.Clock, in []byte) (out []byte, err error)

WASMExtension defines the implementation of a function that will be exposed as wasm imports; therefore, exposed to the host language like Rust.

For example, this can be an RPC call, taking a structured request in `in` and outputting a structured response in `out`, both serialized as protobuf messages.

Such a function needs to be registered through RegisterRuntime.

type WASMExtensioner

type WASMExtensioner interface {
	WASMExtensions() map[string]map[string]WASMExtension
}

Jump to

Keyboard shortcuts

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