wasm

package
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Jan 26, 2023 License: Apache-2.0 Imports: 13 Imported by: 4

Documentation

Index

Constants

View Source
const ClockType = "sf.substreams.v1.Clock"

Variables

This section is empty.

Functions

This section is empty.

Types

type Argument added in v0.0.21

type Argument interface {
	Name() string
}

type BaseArgument added in v0.0.21

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

func (*BaseArgument) Name added in v0.0.21

func (b *BaseArgument) Name() string

type BaseValueArgument added in v0.0.21

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

func (*BaseValueArgument) SetValue added in v0.0.21

func (b *BaseValueArgument) SetValue(data []byte)

func (*BaseValueArgument) Value added in v0.0.21

func (b *BaseValueArgument) Value() []byte

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 InputType

type InputType int

type Instance

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

func (*Instance) Cleanup added in v0.1.0

func (i *Instance) Cleanup() error

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 store.Store)

func (*Instance) WriteOutputToHeap

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

type MapInput added in v0.0.21

type MapInput struct {
	BaseArgument
	BaseValueArgument
}

func NewMapInput added in v0.0.21

func NewMapInput(name string) *MapInput

type Module

type Module struct {
	CurrentInstance *Instance

	Heap *Heap
	// contains filtered or unexported fields
}

func (*Module) FreeMem added in v0.1.0

func (m *Module) FreeMem()

func (*Module) NewInstance

func (m *Module) NewInstance(clock *pbsubstreams.Clock, arguments []Argument) (*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 SourceInput added in v0.0.21

type SourceInput struct {
	BaseArgument
	BaseValueArgument
}

func NewSourceInput added in v0.0.21

func NewSourceInput(name string) *SourceInput

type StoreDeltaInput added in v0.0.21

type StoreDeltaInput struct {
	BaseArgument
	BaseValueArgument
}

func NewStoreDeltaInput added in v0.0.21

func NewStoreDeltaInput(name string) *StoreDeltaInput

type StoreReaderInput added in v0.0.21

type StoreReaderInput struct {
	BaseArgument
	Store store.Store
}

func NewStoreReaderInput added in v0.0.21

func NewStoreReaderInput(name string, store store.Store) *StoreReaderInput

type StoreWriterOutput added in v0.0.21

type StoreWriterOutput struct {
	BaseArgument
	Store        store.Store
	UpdatePolicy pbsubstreams.Module_KindStore_UpdatePolicy
	ValueType    string
}

func NewStoreWriterOutput added in v0.0.21

func NewStoreWriterOutput(name string, store store.Store, updatePolicy pbsubstreams.Module_KindStore_UpdatePolicy, valueType string) *StoreWriterOutput

type ValueArgument added in v0.0.21

type ValueArgument interface {
	Argument
	Value() []byte
	SetValue([]byte)
}

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