Documentation
¶
Index ¶
- Variables
- type Action
- type DefaultHttpContext
- func (*DefaultHttpContext) OnHttpRequestBody(int, bool) Action
- func (*DefaultHttpContext) OnHttpRequestHeaders(int, bool) Action
- func (*DefaultHttpContext) OnHttpRequestTrailers(int) Action
- func (*DefaultHttpContext) OnHttpResponseBody(int, bool) Action
- func (*DefaultHttpContext) OnHttpResponseHeaders(int, bool) Action
- func (*DefaultHttpContext) OnHttpResponseTrailers(int) Action
- func (*DefaultHttpContext) OnHttpStreamDone()
- type DefaultPluginContext
- func (*DefaultPluginContext) NewHttpContext(uint32) HttpContext
- func (*DefaultPluginContext) NewTcpContext(uint32) TcpContext
- func (*DefaultPluginContext) OnPluginDone() bool
- func (*DefaultPluginContext) OnPluginStart(int) OnPluginStartStatus
- func (*DefaultPluginContext) OnQueueReady(uint32)
- func (*DefaultPluginContext) OnTick()
- type DefaultTcpContext
- func (*DefaultTcpContext) OnDownstreamClose(PeerType)
- func (*DefaultTcpContext) OnDownstreamData(int, bool) Action
- func (*DefaultTcpContext) OnNewConnection() Action
- func (*DefaultTcpContext) OnStreamDone()
- func (*DefaultTcpContext) OnUpstreamClose(PeerType)
- func (*DefaultTcpContext) OnUpstreamData(int, bool) Action
- type DefaultVMContext
- type HttpContext
- type OnPluginStartStatus
- type OnVMStartStatus
- type PeerType
- type PluginContext
- type TcpContext
- type VMContext
Constants ¶
This section is empty.
Variables ¶
var ( // ErrorStatusNotFound means not found for various hostcalls. ErrorStatusNotFound = errors.New("error status returned by host: not found") // ErrorStatusBadArgument means the arguments for a hostcall are invalid. ErrorStatusBadArgument = errors.New("error status returned by host: bad argument") // ErrorStatusEmpty means the target queue of DequeueSharedQueue call is empty. ErrorStatusEmpty = errors.New("error status returned by host: empty") // ErrorStatusCasMismatch means the CAS value provided to the SetSharedData // does not match the current value. It indicates that other Wasm VMs // have already set a value for the same key, and the current CAS // for the key gets incremented. // Having retry logic in the face of this error is recommended. ErrorStatusCasMismatch = errors.New("error status returned by host: cas mismatch") // ErrorInternalFailure indicates an internal failure in hosts. // When this error occurs, there's nothing we could do in the Wasm VM. // Abort or panic after this error is recommended. ErrorInternalFailure = errors.New("error status returned by host: internal failure") // ErrorUnimplemented indicates the API is not implemented in the host yet. ErrorUnimplemented = errors.New("error status returned by host: unimplemented") )
Functions ¶
This section is empty.
Types ¶
type Action ¶
type Action uint32
Action represents the action which Wasm contexts expects hosts to take.
type DefaultHttpContext ¶ added in v0.3.0
type DefaultHttpContext struct{}
DefaultHttpContext provides the no-op implementation of the HttpContext interface.
func (*DefaultHttpContext) OnHttpRequestBody ¶ added in v0.3.0
func (*DefaultHttpContext) OnHttpRequestBody(int, bool) Action
func (*DefaultHttpContext) OnHttpRequestHeaders ¶ added in v0.3.0
func (*DefaultHttpContext) OnHttpRequestHeaders(int, bool) Action
func (*DefaultHttpContext) OnHttpRequestTrailers ¶ added in v0.3.0
func (*DefaultHttpContext) OnHttpRequestTrailers(int) Action
func (*DefaultHttpContext) OnHttpResponseBody ¶ added in v0.3.0
func (*DefaultHttpContext) OnHttpResponseBody(int, bool) Action
func (*DefaultHttpContext) OnHttpResponseHeaders ¶ added in v0.3.0
func (*DefaultHttpContext) OnHttpResponseHeaders(int, bool) Action
func (*DefaultHttpContext) OnHttpResponseTrailers ¶ added in v0.3.0
func (*DefaultHttpContext) OnHttpResponseTrailers(int) Action
func (*DefaultHttpContext) OnHttpStreamDone ¶ added in v0.3.0
func (*DefaultHttpContext) OnHttpStreamDone()
type DefaultPluginContext ¶ added in v0.13.0
type DefaultPluginContext struct{}
DefaultPluginContext provides the no-op implementation of the PluginContext interface.
func (*DefaultPluginContext) NewHttpContext ¶ added in v0.13.0
func (*DefaultPluginContext) NewHttpContext(uint32) HttpContext
func (*DefaultPluginContext) NewTcpContext ¶ added in v0.13.0
func (*DefaultPluginContext) NewTcpContext(uint32) TcpContext
func (*DefaultPluginContext) OnPluginDone ¶ added in v0.13.0
func (*DefaultPluginContext) OnPluginDone() bool
func (*DefaultPluginContext) OnPluginStart ¶ added in v0.13.0
func (*DefaultPluginContext) OnPluginStart(int) OnPluginStartStatus
func (*DefaultPluginContext) OnQueueReady ¶ added in v0.13.0
func (*DefaultPluginContext) OnQueueReady(uint32)
func (*DefaultPluginContext) OnTick ¶ added in v0.13.0
func (*DefaultPluginContext) OnTick()
type DefaultTcpContext ¶ added in v0.3.0
type DefaultTcpContext struct{}
DefaultTcpContext provides the no-op implementation of the TcpContext interface.
func (*DefaultTcpContext) OnDownstreamClose ¶ added in v0.3.0
func (*DefaultTcpContext) OnDownstreamClose(PeerType)
func (*DefaultTcpContext) OnDownstreamData ¶ added in v0.3.0
func (*DefaultTcpContext) OnDownstreamData(int, bool) Action
func (*DefaultTcpContext) OnNewConnection ¶ added in v0.3.0
func (*DefaultTcpContext) OnNewConnection() Action
func (*DefaultTcpContext) OnStreamDone ¶ added in v0.3.0
func (*DefaultTcpContext) OnStreamDone()
func (*DefaultTcpContext) OnUpstreamClose ¶ added in v0.3.0
func (*DefaultTcpContext) OnUpstreamClose(PeerType)
func (*DefaultTcpContext) OnUpstreamData ¶ added in v0.3.0
func (*DefaultTcpContext) OnUpstreamData(int, bool) Action
type DefaultVMContext ¶ added in v0.13.0
type DefaultVMContext struct{}
DefaultVMContext provides the no-op implementation of the VMContext interface.
func (*DefaultVMContext) NewPluginContext ¶ added in v0.13.0
func (*DefaultVMContext) NewPluginContext(contextID uint32) PluginContext
func (*DefaultVMContext) OnVMStart ¶ added in v0.13.0
func (*DefaultVMContext) OnVMStart(vmConfigurationSize int) OnVMStartStatus
type HttpContext ¶ added in v0.3.0
type HttpContext interface {
// OnHttpRequestHeaders is called when request headers arrive.
// Return types.ActionPause if you want to stop sending headers to the upstream.
OnHttpRequestHeaders(numHeaders int, endOfStream bool) Action
// OnHttpRequestBody is called when a request body *frame* arrives.
// Note that this is potentially called multiple times until we see end_of_stream = true.
// Return types.ActionPause if you want to buffer the body and stop sending body to the upstream.
// Even after returning types.ActionPause, this will be called when an unseen frame arrives.
OnHttpRequestBody(bodySize int, endOfStream bool) Action
// OnHttpRequestTrailers is called when request trailers arrive.
// Return types.ActionPause if you want to stop sending trailers to the upstream.
OnHttpRequestTrailers(numTrailers int) Action
// OnHttpResponseHeaders is called when response headers arrive.
// Return types.ActionPause if you want to stop sending headers to downstream.
OnHttpResponseHeaders(numHeaders int, endOfStream bool) Action
// OnHttpResponseBody is called when a response body *frame* arrives.
// Note that this is potentially called multiple times until we see end_of_stream = true.
// Return types.ActionPause if you want to buffer the body and stop sending body to the downtream.
// Even after returning types.ActionPause, this will be called when an unseen frame arrives.
OnHttpResponseBody(bodySize int, endOfStream bool) Action
// OnHttpResponseTrailers is called when response trailers arrive.
// Return types.ActionPause if you want to stop sending trailers to the downstream.
OnHttpResponseTrailers(numTrailers int) Action
// OnHttpStreamDone is called before the host deletes this context.
// You can retrieve the HTTP request/response information (such as headers, etc.) during this call.
// This can be used to implement logging features.
OnHttpStreamDone()
}
HttpContext corresponds to each Http stream and is created by PluginContext via NewHttpContext.
type OnPluginStartStatus ¶ added in v0.1.0
type OnPluginStartStatus bool
OnPluginStartStatus is the type of status returned by OnPluginStart
const ( // OnPluginStartStatusOK indicates that PluginContext.OnPluginStart succeeded. OnPluginStartStatusOK OnPluginStartStatus = true // OnPluginStartStatusFailed indicates that PluginContext.OnPluginStart failed. // Further processing for this plugin context never happens. OnPluginStartStatusFailed OnPluginStartStatus = false )
type OnVMStartStatus ¶ added in v0.1.0
type OnVMStartStatus bool
OnVMStartStatus is the type of status returned by OnVMStart
const ( // OnVMStartStatusOK indicates that VMContext.OnVMStartStatus succeeded. OnVMStartStatusOK OnVMStartStatus = true // OnVMStartStatusFailed indicates that VMContext.OnVMStartStatus failed. // Further processing for this VM never happens, and hosts would // delete this VM. OnVMStartStatusFailed OnVMStartStatus = false )
type PluginContext ¶ added in v0.13.0
type PluginContext interface {
// OnPluginStart is called for all plugin contexts (after OnVmStart if this is the VM context).
// During this call, GetPluginConfiguration is available and can be used to
// retrieve the configuration set at config.configuration in the host configuration.
OnPluginStart(pluginConfigurationSize int) OnPluginStartStatus
// OnPluginDone is called right before the plugin contexts are deleted by hosts.
// Return false to indicate plugin is in a pending state and there's more work left.
// In that case you must call PluginDone() function once the work is completed to indicate that
// hosts can kill this context.
OnPluginDone() bool
// OnQueueReady is called when the queue is ready after calling the RegisterQueue hostcall.
// Note that the queue might be dequeued by another VM running in another thread, so it's
// possible queue will be empty during the OnQueueReady even if it is not dequeued by this VM.
OnQueueReady(queueID uint32)
// OnTick is called when SetTickPeriodMilliSeconds hostcall is called by this plugin context.
// This can be used to do asynchronous tasks in parallel to the stream processing.
OnTick()
// NewTcpContext is used for creating TcpContext for each Tcp stream.
// Return nil to indicate this PluginContext is not for TcpContext.
NewTcpContext(contextID uint32) TcpContext
// NewHttpContext is used for creating HttpContext for each Http stream.
// Return nil to indicate this PluginContext is not for HttpContext.
NewHttpContext(contextID uint32) HttpContext
}
PluginContext corresponds to different plugin configurations (config.configuration). Each configuration is typically given at the HTTP/TCP filter in a listener in the hosts. PluginContext is responsible for creating the "filter instances" for each TCP/HTTP stream on the listener.
type TcpContext ¶ added in v0.3.0
type TcpContext interface {
// OnNewConnection is called when the Tcp connection is established between downstream and upstream.
OnNewConnection() Action
// OnDownstreamData is called when a data frame arrives from the downstream connection.
OnDownstreamData(dataSize int, endOfStream bool) Action
// OnDownstreamClose is called when the downstream connection is closed.
OnDownstreamClose(peerType PeerType)
// OnUpstreamData is called when a data frame arrives from the upstream connection.
OnUpstreamData(dataSize int, endOfStream bool) Action
// OnUpstreamClose is called when the upstream connection is closed.
OnUpstreamClose(peerType PeerType)
// OnStreamDone is called before the host deletes this context.
// You can retrieve the stream information (such as remote addresses, etc.) during this call.
// This can be used to implement logging features.
OnStreamDone()
}
TcpContext corresponds to each Tcp stream and is created by PluginContext via NewTcpContext.
type VMContext ¶ added in v0.13.0
type VMContext interface {
// OnVMStart is called after the VM is created and main function is called.
// During this call, GetVMConfiguration hostcall is available and can be used to
// retrieve the configuration set at vm_config.configuration in the host configuration.
// This is mainly used for doing Wasm VM-wide initialization.
OnVMStart(vmConfigurationSize int) OnVMStartStatus
// NewPluginContext is used for creating PluginContext for each plugin configuration.
NewPluginContext(contextID uint32) PluginContext
}
VMContext corresponds to a Wasm VM machine and its configuration. It's the entrypoint for extending the network proxy. Its lifetime matches the Wasm Virtual Machines on the host.