Documentation
¶
Overview ¶
Package host implements the functionality to provision and talk to runtimes.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( // ErrInvalidArgument is the error returned when any of the passed method arguments is invalid. ErrInvalidArgument = fmt.Errorf("runtime: invalid argument") // ErrCheckTxFailed is the error returned when a transaction is rejected by the runtime. ErrCheckTxFailed = fmt.Errorf("runtime: check tx failed") // ErrInternal is the error returned when an unspecified internal error occurs. ErrInternal = fmt.Errorf("runtime: internal error") )
Functions ¶
This section is empty.
Types ¶
type CompositeRuntime ¶ added in v0.2400.0
type CompositeRuntime interface {
// Component returns the runtime component with the given unique identifier.
// If the component with the given identifier does not exist, nil is returned.
Component(id component.ID) (Runtime, bool)
}
CompositeRuntime is a runtime that provides multiple components which are themselves runtimes.
type Config ¶
type Config struct {
// Name is the optional human readable runtime name.
Name string
// ID is the runtime identifier.
ID common.Namespace
// Component is the component that should be provisioned.
Component *bundle.ExplodedComponent
// Extra is an optional provisioner-specific configuration.
Extra any
// MessageHandler is the message handler for the Runtime Host Protocol messages.
MessageHandler RuntimeHandler
// LocalConfig is the node-local runtime configuration.
LocalConfig map[string]any
// Log is the runtime log handle to use for writing logs to this runtime.
Log *log.Log
}
Config contains common configuration for the provisioned runtime component.
type ConfigUpdatedEvent ¶ added in v0.2300.0
type ConfigUpdatedEvent struct{}
ConfigUpdatedEvent is a runtime configuration updated event.
This event can be used by runtime host implementations to signal that the underlying runtime configuration has changed and some things (e.g. registration) may need a refresh.
type Event ¶
type Event struct {
Started *StartedEvent
FailedToStart *FailedToStartEvent
Stopped *StoppedEvent
Updated *UpdatedEvent
ConfigUpdated *ConfigUpdatedEvent
}
Event is a runtime host event.
type FailedToStartEvent ¶
type FailedToStartEvent struct {
// Error is the error that has occurred.
Error error
}
FailedToStartEvent is a failed to start runtime event.
type Provisioner ¶
type Provisioner interface {
// NewRuntime provisions a new runtime.
//
// This method may return before the runtime is fully provisioned. The returned runtime will not
// be started automatically, you must call Start explicitly.
NewRuntime(cfg Config) (Runtime, error)
// Name returns the name of the provisioner.
Name() string
}
Provisioner is the runtime provisioner interface.
type RichRuntime ¶ added in v0.2100.0
type RichRuntime interface {
Runtime
// CheckTx requests the runtime to check a given transaction.
CheckTx(
ctx context.Context,
rb *block.Block,
lb *consensus.LightBlock,
epoch beacon.EpochTime,
maxMessages uint32,
batch transaction.RawBatch,
) ([]protocol.CheckTxResult, error)
// Query requests the runtime to answer a runtime-specific query.
Query(
ctx context.Context,
rb *block.Block,
lb *consensus.LightBlock,
epoch beacon.EpochTime,
maxMessages uint32,
method string,
args []byte,
) ([]byte, error)
// LocalRPC requests the runtime to handle a local RPC call.
LocalRPC(
ctx context.Context,
method string,
args any,
rsp any,
) error
// ConsensusSync requests the runtime to sync its light client up to the given consensus height.
ConsensusSync(ctx context.Context, height uint64) error
}
RichRuntime provides higher-level functions for talking with a runtime.
func NewRichRuntime ¶ added in v0.2100.0
func NewRichRuntime(rt Runtime) RichRuntime
NewRichRuntime creates a new higher-level wrapper for a given runtime. It provides additional convenience functions for talking with a runtime.
type Runtime ¶
type Runtime interface {
// ID is the runtime identifier.
ID() common.Namespace
// GetActiveVersion retrieves the version of the currently active runtime.
GetActiveVersion() (*version.Version, error)
// GetInfo retrieves the runtime information.
GetInfo(ctx context.Context) (*protocol.RuntimeInfoResponse, error)
// GetCapabilityTEE retrieves the CapabilityTEE of the runtime.
//
// It may be nil in case the CapabilityTEE is not available or if the runtime is not running
// inside a TEE.
GetCapabilityTEE() (*node.CapabilityTEE, error)
// Call sends a request message to the runtime over the Runtime Host Protocol and waits for the
// response (which may be a failure).
Call(ctx context.Context, body *protocol.Body) (*protocol.Body, error)
// UpdateCapabilityTEE asks the runtime to update its CapabilityTEE with latest data.
UpdateCapabilityTEE()
// WatchEvents subscribes to runtime status events.
WatchEvents() (<-chan *Event, pubsub.ClosableSubscription)
// Start starts the runtime.
Start()
// Abort attempts to abort a runtime so that it will be ready to service new requests.
// In case abort fails or force flag is set, the runtime will be restarted.
Abort(ctx context.Context, force bool) error
// Stop signals the provisioned runtime to stop.
Stop()
}
Runtime is a provisioned runtime interface.
type RuntimeEventEmitter ¶
type RuntimeEventEmitter interface {
// EmitEvent allows the caller to emit a runtime event.
EmitEvent(ev *Event)
}
RuntimeEventEmitter is the interface for emitting events for a provisioned runtime.
type RuntimeHandler ¶ added in v0.2400.0
type RuntimeHandler interface {
protocol.Handler
// NewSubHandler creates a sub-handler specialized for the given runtime component.
NewSubHandler(comp *bundle.ExplodedComponent) (RuntimeHandler, error)
// AttachRuntime attaches a given hosted runtime instance to this handler.
AttachRuntime(id component.ID, host Runtime) error
}
RuntimeHandler is the message handler for the host side of the runtime host protocol.
type RuntimeLogWrapper ¶ added in v0.2201.7
type RuntimeLogWrapper struct {
// contains filtered or unexported fields
}
RuntimeLogWrapper is a Writer that interprets data written to it as JSON-formatted runtime logs, and re-logs the messages as oasis-node logs. For example, it translates runtime log levels to oasis-node log levels, because the two have slightly different formats.
It hardcodes some assumptions about the format of the runtime logs.
func NewRuntimeLogWrapper ¶ added in v0.2201.7
func NewRuntimeLogWrapper(internalLogger *logging.Logger, runtimeLogger *logging.Logger, suffixes ...any) *RuntimeLogWrapper
NewRuntimeLogWrapper creates a new RuntimeLogWrapper.
type StartedEvent ¶
type StartedEvent struct {
// Version is the runtime version.
Version version.Version
// CapabilityTEE is the newly started runtime's CapabilityTEE. It may be nil in case the runtime
// is not running inside a TEE.
CapabilityTEE *node.CapabilityTEE
}
StartedEvent is a runtime started event.
type UpdatedEvent ¶
type UpdatedEvent struct {
// Version is the runtime version.
Version version.Version
// CapabilityTEE is the updated runtime's CapabilityTEE. It may be nil in case the runtime is
// not running inside a TEE.
CapabilityTEE *node.CapabilityTEE
}
UpdatedEvent is a runtime metadata updated event.
Directories
¶
| Path | Synopsis |
|---|---|
|
Package composite implements support for runtimes composed of multiple components, like having both on-chain and off-chain logic.
|
Package composite implements support for runtimes composed of multiple components, like having both on-chain and off-chain logic. |
|
Package loadbalance implements a runtime provisioner that internally load-balances requests among multiple runtime instances.
|
Package loadbalance implements a runtime provisioner that internally load-balances requests among multiple runtime instances. |
|
Package mock implements a mock runtime host useful for tests.
|
Package mock implements a mock runtime host useful for tests. |
|
Package multi implements support for a runtime host aggregator that handles multiplexing multiple instances of other runtime hosts, to enable seamless transitions between versions.
|
Package multi implements support for a runtime host aggregator that handles multiplexing multiple instances of other runtime hosts, to enable seamless transitions between versions. |
|
Package protocol implements the Runtime Host Protocol.
|
Package protocol implements the Runtime Host Protocol. |
|
Package sandbox implements the runtime provisioner for runtimes in sandboxed processes.
|
Package sandbox implements the runtime provisioner for runtimes in sandboxed processes. |
|
process
Package process implements a process sandboxing mechanism.
|
Package process implements a process sandboxing mechanism. |
|
Package sgx implements the runtime provisioner for runtimes in Intel SGX enclaves.
|
Package sgx implements the runtime provisioner for runtimes in Intel SGX enclaves. |
|
common
Package common implements common SGX functions.
|
Package common implements common SGX functions. |
|
Package tdx implements the TDX runtime provisioner.
|
Package tdx implements the TDX runtime provisioner. |
|
Package tests contains common tests for runtime host implementations.
|
Package tests contains common tests for runtime host implementations. |