iextengine

package
v0.0.0-...-e727035 Latest Latest
Warning

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

Go to latest
Published: May 2, 2024 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

View Source
const DefaultMemoryLimitPages = 256
View Source
const MemoryPageSize = 65536

Variables

View Source
var DefaultExtEngineConfig = ExtEngineConfig{
	MemoryLimitPages: DefaultMemoryLimitPages,
}

Functions

This section is empty.

Types

type BuiltInAppExtFuncs

type BuiltInAppExtFuncs map[appdef.FullQName]BuiltInExtFunc

type BuiltInExtFunc

type BuiltInExtFunc func(ctx context.Context, io IExtensionIO) error

type BuiltInExtFuncs

type BuiltInExtFuncs map[istructs.AppQName]BuiltInAppExtFuncs // Provided to construct factory of engines

type ExtEngineConfig

type ExtEngineConfig struct {
	// MemoryLimitPages limits the maximum memory pages available to the extension
	// 1 page = 2^16 bytes.
	//
	// Default value is 2^8 so the total available memory is 2^24 bytes
	MemoryLimitPages uint
}

type ExtensionLimits

type ExtensionLimits struct {

	// Default is 0 (execution interval not specified)
	ExecutionInterval time.Duration
}

type ExtensionPackage

type ExtensionPackage struct {
	QualifiedName  string
	ModuleUrl      *url.URL
	ExtensionNames []string
}

type IExtensionEngine

type IExtensionEngine interface {
	SetLimits(limits ExtensionLimits)
	Invoke(ctx context.Context, extName appdef.FullQName, io IExtensionIO) (err error)
	Close(ctx context.Context)
}

1 package = 1 ext engine instance

Extension engine is not thread safe

var NullExtensionEngine IExtensionEngine = nullExtensionEngine{}

type IExtensionEngineFactory

type IExtensionEngineFactory interface {
	// LocalPath is a path package data can be got from
	// - packages is not used for ExtensionEngineKind_BuiltIn
	// - config is not used for ExtensionEngineKind_BuiltIn
	New(ctx context.Context, app istructs.AppQName, packages []ExtensionPackage, config *ExtEngineConfig, numEngines int) ([]IExtensionEngine, error)
}
var NullExtensionEngineFactory IExtensionEngineFactory = nullExtensionEngineFactory{}

type IExtensionIO

type IExtensionIO interface {
	istructs.IState
	istructs.IIntents
	istructs.IPkgNameResolver
}

func NewExtensionIO

func NewExtensionIO(appdef appdef.IAppDef, state istructs.IState, intents istructs.IIntents) IExtensionIO

creates and returns new instance of IExtensionIO

type IExtensionsModule

type IExtensionsModule interface {
	// Returns URL to a resource
	//
	// Example: file:///home/user1/myextension.wasm
	GetURL() string
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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