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 Config ¶
type Config struct { // Bundle is the runtime bundle. Bundle *RuntimeBundle // Extra is an optional provisioner-specific configuration. Extra interface{} // MessageHandler is the message handler for the Runtime Host Protocol messages. MessageHandler protocol.Handler // LocalConfig is the node-local runtime configuration. LocalConfig map[string]interface{} }
Config contains common configuration for the provisioned runtime.
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) // 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 // 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 // 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(ctx context.Context) error // WatchEvents subscribes to runtime status events. WatchEvents(ctx context.Context) (<-chan *Event, pubsub.ClosableSubscription, error) // Start attempts to start the runtime. Start() error // 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 RuntimeBundle ¶ added in v0.2200.0
type RuntimeBundle struct { *bundle.Bundle // Exeuctable is the path to the extracted ELF or TEE executable. Path string }
RuntimeBundle is a exploded runtime bundle ready for execution.
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 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(logger *logging.Logger, suffixes ...interface{}) *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 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. |
Package tests contains common tests for runtime host implementations.
|
Package tests contains common tests for runtime host implementations. |