Documentation
¶
Overview ¶
NOTE: loosely based on: https://github.com/tetratelabs/wazero/blob/1353ca24fef0a57a3a342d75f20357a6e9d3be35/internal/wasip1/errno.go#L14
Index ¶
- Variables
- func GetWorkflowSpec(ctx context.Context, modCfg *ModuleConfig, binary []byte, config []byte) (*legacySdk.WorkflowSpec, error)
- func NewModule(modCfg *ModuleConfig, binary []byte, opts ...func(*ModuleConfig)) (*module, error)
- func SetUnwinding(cfg *wasmtime.Config)
- func WithDeterminism() func(*ModuleConfig)
- type DeterminismConfig
- type Errno
- type ExecutionHelper
- type FetchRequest
- type FetchRequestMetadata
- type FetchResponse
- type ModuleBase
- type ModuleConfig
- type ModuleV1
- type ModuleV2
Constants ¶
This section is empty.
Variables ¶
var ( DefaultInitialFuel = uint64(100_000_000) ResponseBufferTooSmall = "response buffer too small" )
Functions ¶
func GetWorkflowSpec ¶
func GetWorkflowSpec(ctx context.Context, modCfg *ModuleConfig, binary []byte, config []byte) (*legacySdk.WorkflowSpec, error)
func NewModule ¶
func NewModule(modCfg *ModuleConfig, binary []byte, opts ...func(*ModuleConfig)) (*module, error)
func SetUnwinding ¶ added in v0.8.0
func SetUnwinding(cfg *wasmtime.Config)
Load testing shows that leaving native unwind info enabled causes a very large slowdown when loading multiple modules.
func WithDeterminism ¶ added in v0.3.0
func WithDeterminism() func(*ModuleConfig)
WithDeterminism sets the Determinism field to a deterministic seed from a known time.
"The Times 03/Jan/2009 Chancellor on brink of second bailout for banks"
Types ¶
type DeterminismConfig ¶ added in v0.3.0
type DeterminismConfig struct {
// Seed is the seed used to generate cryptographically insecure random numbers in the module.
Seed int64
}
type Errno ¶ added in v0.3.0
type Errno = int32
const ( // ErrnoSuccess No error occurred. System call completed successfully. ErrnoSuccess Errno = iota // Errno2big Argument list too long. Errno2big // ErrnoAcces Permission denied. ErrnoAcces // ErrnoAddrinuse Address in use. ErrnoAddrinuse // ErrnoAddrnotavail Address not available. ErrnoAddrnotavail // ErrnoAfnosupport Address family not supported. ErrnoAfnosupport // ErrnoAgain Resource unavailable, or operation would block. ErrnoAgain // ErrnoAlready Connection already in progress. ErrnoAlready // ErrnoBadf Bad file descriptor. ErrnoBadf // ErrnoBadmsg Bad message. ErrnoBadmsg // ErrnoBusy Device or resource busy. ErrnoBusy // ErrnoCanceled Operation canceled. ErrnoCanceled // ErrnoChild No child processes. ErrnoChild // ErrnoConnaborted Connection aborted. ErrnoConnaborted // ErrnoConnrefused Connection refused. ErrnoConnrefused // ErrnoConnreset Connection reset. ErrnoConnreset // ErrnoDeadlk Resource deadlock would occur. ErrnoDeadlk // ErrnoDestaddrreq Destination address required. ErrnoDestaddrreq // ErrnoDom Mathematics argument out of domain of function. ErrnoDom // ErrnoDquot Reserved. ErrnoDquot // ErrnoExist File exists. ErrnoExist // ErrnoFault Bad address. ErrnoFault // ErrnoFbig File too large. ErrnoFbig // ErrnoHostunreach Host is unreachable. ErrnoHostunreach // ErrnoIdrm Identifier removed. ErrnoIdrm // ErrnoIlseq Illegal byte sequence. ErrnoIlseq // ErrnoInprogress Operation in progress. ErrnoInprogress // ErrnoIntr Interrupted function. ErrnoIntr // ErrnoInval Invalid argument. ErrnoInval // ErrnoIo I/O error. ErrnoIo // ErrnoIsconn Socket is connected. ErrnoIsconn // ErrnoIsdir Is a directory. ErrnoIsdir // ErrnoLoop Too many levels of symbolic links. ErrnoLoop // ErrnoMfile File descriptor value too large. ErrnoMfile // ErrnoMlink Too many links. ErrnoMlink // ErrnoMsgsize Message too large. ErrnoMsgsize // ErrnoMultihop Reserved. ErrnoMultihop // ErrnoNametoolong Filename too long. ErrnoNametoolong // ErrnoNetdown Network is down. ErrnoNetdown // ErrnoNetreset Connection aborted by network. ErrnoNetreset // ErrnoNetunreach Network unreachable. ErrnoNetunreach // ErrnoNfile Too many files open in system. ErrnoNfile // ErrnoNobufs No buffer space available. ErrnoNobufs // ErrnoNodev No such device. ErrnoNodev // ErrnoNoent No such file or directory. ErrnoNoent // ErrnoNoexec Executable file format error. ErrnoNoexec // ErrnoNolck No locks available. ErrnoNolck // ErrnoNolink Reserved. ErrnoNolink // ErrnoNomem Not enough space. ErrnoNomem // ErrnoNomsg No message of the desired type. ErrnoNomsg // ErrnoNoprotoopt No message of the desired type. ErrnoNoprotoopt // ErrnoNospc No space left on device. ErrnoNospc // ErrnoNosys function not supported. ErrnoNosys // ErrnoNotconn The socket is not connected. ErrnoNotconn // ErrnoNotdir Not a directory or a symbolic link to a directory. ErrnoNotdir // ErrnoNotempty Directory not empty. ErrnoNotempty // ErrnoNotrecoverable State not recoverable. ErrnoNotrecoverable // ErrnoNotsock Not a socket. ErrnoNotsock // ErrnoNotsup Not supported, or operation not supported on socket. ErrnoNotsup // ErrnoNotty Inappropriate I/O control operation. ErrnoNotty // ErrnoNxio No such device or address. ErrnoNxio // ErrnoOverflow Value too large to be stored in data type. ErrnoOverflow // ErrnoOwnerdead Previous owner died. ErrnoOwnerdead // ErrnoPerm Operation not permitted. ErrnoPerm // ErrnoPipe Broken pipe. ErrnoPipe // ErrnoProto Protocol error. ErrnoProto // ErrnoProtonosupport Protocol error. ErrnoProtonosupport // ErrnoPrototype Protocol wrong type for socket. ErrnoPrototype // ErrnoRange Result too large. ErrnoRange // ErrnoRofs Read-only file system. ErrnoRofs // ErrnoSpipe Invalid seek. ErrnoSpipe // ErrnoSrch No such process. ErrnoSrch // ErrnoStale Reserved. ErrnoStale // ErrnoTimedout Connection timed out. ErrnoTimedout // ErrnoTxtbsy Text file busy. ErrnoTxtbsy // ErrnoXdev Cross-device link. ErrnoXdev )
Note: Below prefers POSIX symbol names over WASI ones, even if the docs are from WASI. See https://linux.die.net/man/3/errno See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#variants-1
type ExecutionHelper ¶ added in v0.7.1
type ExecutionHelper interface {
// CallCapability blocking call to the Workflow Engine
CallCapability(ctx context.Context, request *sdkpb.CapabilityRequest) (*sdkpb.CapabilityResponse, error)
GetSecrets(ctx context.Context, request *sdkpb.GetSecretsRequest) ([]*sdkpb.SecretResponse, error)
GetWorkflowExecutionID() string
GetNodeTime() time.Time
GetDONTime(ctx context.Context) (time.Time, error)
EmitUserLog(log string) error
}
ExecutionHelper Implemented by those running the host, for example the Workflow Engine
type FetchRequest ¶ added in v0.7.0
type FetchRequest struct {
dagsdk.FetchRequest
Metadata FetchRequestMetadata
}
type FetchRequestMetadata ¶ added in v0.7.0
type FetchResponse ¶ added in v0.7.0
type FetchResponse = dagsdk.FetchResponse
Use an alias here to allow extending the FetchResponse with additional metadata in the future, as with the FetchRequest above.
type ModuleBase ¶ added in v0.7.1
type ModuleBase interface {
Start()
Close()
IsLegacyDAG() bool
}
type ModuleConfig ¶
type ModuleConfig struct {
TickInterval time.Duration
Timeout *time.Duration
MaxMemoryMBs uint64
MinMemoryMBs uint64
InitialFuel uint64
Logger logger.Logger
IsUncompressed bool
Fetch func(ctx context.Context, req *FetchRequest) (*FetchResponse, error)
MaxFetchRequests int
MaxCompressedBinarySize uint64
MaxDecompressedBinarySize uint64
MaxResponseSizeBytes uint64
// Labeler is used to emit messages from the module.
Labeler custmsg.MessageEmitter
// If Determinism is set, the module will override the random_get function in the WASI API with
// the provided seed to ensure deterministic behavior.
Determinism *DeterminismConfig
}
type ModuleV2 ¶ added in v0.7.1
type ModuleV2 interface {
ModuleBase
// V2/"NoDAG" API - request either the list of Trigger Subscriptions or launch workflow execution
Execute(ctx context.Context, request *sdkpb.ExecuteRequest, handler ExecutionHelper) (*sdkpb.ExecutionResult, error)
}
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
internal
|
|
|
test
|
|
|
builderr/cmd
command
|
|
|
computepanic/cmd
command
|
|
|
runnerapi/cmd
command
|