proxywasm

package
v0.13.0 Latest Latest
Warning

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

Go to latest
Published: Jun 25, 2021 License: Apache-2.0 Imports: 4 Imported by: 91

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AddHttpRequestHeader added in v0.0.5

func AddHttpRequestHeader(key, value string) error

AddHttpRequestHeader adds a value for given "key" of request headers. Only available during types.HttpContext.OnHttpRequestHeaders.

func AddHttpRequestTrailer added in v0.0.5

func AddHttpRequestTrailer(key, value string) error

AddHttpRequestTrailer adds a value for given "key" of request trailers. Only available during types.HttpContext.OnHttpRequestTrailers.

func AddHttpResponseHeader added in v0.0.5

func AddHttpResponseHeader(key, value string) error

AddHttpResponseHeader adds a value for given "key" of response headers. Only available during types.HttpContext.OnHttpResponseHeaders.

func AddHttpResponseTrailer added in v0.0.5

func AddHttpResponseTrailer(key, value string) error

AddHttpResponseTrailer adds a value for given "key" of response trailers. Only available during types.HttpContext.OnHttpResponseHeaders.

func AppendDownstreamData added in v0.2.0

func AppendDownstreamData(data []byte) error

AppendDownstreamData appends the given bytes to the downstream tcp data in buffered in the host. Only available during types.TcpContext.OnDownstreamData.

func AppendHttpRequestBody added in v0.2.0

func AppendHttpRequestBody(data []byte) error

AppendHttpRequestBody appends the given bytes to the http request body buffer. Only available during types.HttpContext.OnHttpRequestBody. Please note that you must remove "content-length" header during OnHttpRequestHeaders. Otherwise, the wrong content-length would be sent to the upstream, and might result in client crash.

func AppendHttpResponseBody added in v0.2.0

func AppendHttpResponseBody(data []byte) error

AppendHttpResponseBody appends the given bytes to the http response body buffer. Only available during types.HttpContext.OnHttpResponseBody. Please note that you must remove "content-length" header during OnHttpResponseHeaders. Otherwise, the wrong content-length would be sent to the upstream, and might result in client crash.

func AppendUpstreamData added in v0.2.0

func AppendUpstreamData(data []byte) error

AppendUpstreamData appends the given bytes to the upstream tcp data in buffered in the host. Only available during types.TcpContext.OnUpstreamData.

func CallForeignFunction added in v0.2.0

func CallForeignFunction(funcName string, param []byte) (ret []byte, err error)

CallForeignFunction calls a foreign function of given funcName defined by host implementations. Foreign functions are host specific functions so please refer to the doc of your host implementation for detail.

func CloseDownstream added in v0.2.0

func CloseDownstream() error

CloseDownstream closes the downstream tcp connection for this Tcp context. Only available for types.TcpContext.

func CloseUpstream added in v0.2.0

func CloseUpstream() error

CloseUpstream closes the upstream tcp connection for this Tcp context. Only available for types.TcpContext.

func ContinueTcpStream added in v0.3.0

func ContinueTcpStream() error

ContinueTcpStream continues interating on the tcp connection after types.Action.Pause was returned by types.TcpContext. Only available for types.TcpContext.

func DequeueSharedQueue added in v0.0.5

func DequeueSharedQueue(queueID uint32) ([]byte, error)

DequeueSharedQueue dequeues an data from the shared queue of the given queueID. In order to get queue id for a target queue, use "ResolveSharedQueue" first.

func DispatchHttpCall added in v0.0.5

func DispatchHttpCall(
	cluster string,
	headers [][2]string,
	body []byte,
	trailers [][2]string,
	timeoutMillisecond uint32,
	callBack func(numHeaders, bodySize, numTrailers int),
) (calloutID uint32, err error)

DispatchHttpCall is for dipatching http calls to a remote cluster. This can be used by all contexts including Tcp and Root contexts. "cluster" arg specifies the remote cluster the host will send the request against with "headers", "body", "trailers" arguments. If the host successfully made the request and recevived the response from the remote cluster, then "callBack" function is called. During callBack is called, "GetHttpCallResponseHeaders", "GetHttpCallResponseBody", "GetHttpCallResponseTrailers" calls are available for accessing the response information.

func EnqueueSharedQueue added in v0.0.5

func EnqueueSharedQueue(queueID uint32, data []byte) error

EnqueueSharedQueue enqueues an data to the shared queue of the given queueID. In order to get queue id for a target queue, use "ResolveSharedQueue" first.

func GetDownstreamData added in v0.2.0

func GetDownstreamData(start, maxSize int) ([]byte, error)

GetDownstreamData can be used for retrieving tcp downstream data in buffered in the host. Returned bytes begining from "start" to "start" +"maxSize" in the buffer. Only available during types.TcpContext.OnDownstreamData.

func GetHttpCallResponseBody added in v0.0.5

func GetHttpCallResponseBody(start, maxSize int) ([]byte, error)

GetHttpCallResponseBody is used for retrieving http response body returned by a remote cluster in reponse to the DispatchHttpCall. Only available during "callback" function passed to DispatchHttpCall.

func GetHttpCallResponseHeaders added in v0.0.5

func GetHttpCallResponseHeaders() ([][2]string, error)

GetHttpCallResponseHeaders is used for retrieving http response headers returned by a remote cluster in reponse to the DispatchHttpCall. Only available during "callback" function passed to DispatchHttpCall.

func GetHttpCallResponseTrailers added in v0.0.5

func GetHttpCallResponseTrailers() ([][2]string, error)

GetHttpCallResponseTrailers is used for retrieving http response trailers returned by a remote cluster in reponse to the DispatchHttpCall. Only available during "callback" function passed to DispatchHttpCall.

func GetHttpRequestBody added in v0.0.5

func GetHttpRequestBody(start, maxSize int) ([]byte, error)

GetHttpRequestBody is used for retrieving the entire http request body. Only available during types.HttpContext.OnHttpRequestBody.

func GetHttpRequestHeader added in v0.0.5

func GetHttpRequestHeader(key string) (string, error)

GetHttpRequestHeader is used for retrieving a http request header value for given "key". Only available during types.HttpContext.OnHttpRequestHeaders and types.HttpContext.OnHttpStreamDone. If multiple values are present for the key, the "first" value found in the host is returned. See https://github.com/envoyproxy/envoy/blob/72bf41fb0ecc039f196be02f534bfc2c9c69f348/source/extensions/common/wasm/context.cc#L762-L763 for detail.

func GetHttpRequestHeaders added in v0.0.5

func GetHttpRequestHeaders() ([][2]string, error)

GetHttpRequestHeaders is used for retrieving http request headers. Only available during types.HttpContext.OnHttpRequestHeaders and types.HttpContext.OnHttpStreamDone.

func GetHttpRequestTrailer added in v0.0.5

func GetHttpRequestTrailer(key string) (string, error)

GetHttpRequestTrailer is used for retrieving a http request trailer value for given "key". Only available during types.HttpContext.OnHttpRequestTrailers and types.HttpContext.OnHttpStreamDone. If multiple values are present for the key, the "first" value found in the host is returned. See https://github.com/envoyproxy/envoy/blob/72bf41fb0ecc039f196be02f534bfc2c9c69f348/source/extensions/common/wasm/context.cc#L762-L763 for detail.

func GetHttpRequestTrailers added in v0.0.5

func GetHttpRequestTrailers() ([][2]string, error)

GetHttpRequestTrailers is used for retrieving http request trailers. Only available during types.HttpContext.OnHttpRequestTrailers and types.HttpContext.OnHttpStreamDone.

func GetHttpResponseBody added in v0.0.5

func GetHttpResponseBody(start, maxSize int) ([]byte, error)

GetHttpResponseBody is used for retrieving the entire http response body. Only available during types.HttpContext.OnHttpResponseBody.

func GetHttpResponseHeader added in v0.0.5

func GetHttpResponseHeader(key string) (string, error)

GetHttpResponseHeader is used for retrieving a http response header value for given "key". Only available during types.HttpContext.OnHttpResponseHeaders and types.HttpContext.OnHttpStreamDone. If multiple values are present for the key, the "first" value found in the host is returned. See https://github.com/envoyproxy/envoy/blob/72bf41fb0ecc039f196be02f534bfc2c9c69f348/source/extensions/common/wasm/context.cc#L762-L763 for detail.

func GetHttpResponseHeaders added in v0.0.5

func GetHttpResponseHeaders() ([][2]string, error)

GetHttpResponseHeaders is used for retrieving http response headers. Only available during types.HttpContext.OnHttpResponseHeaders and types.HttpContext.OnHttpStreamDone.

func GetHttpResponseTrailer added in v0.0.5

func GetHttpResponseTrailer(key string) (string, error)

GetHttpResponseTrailer is used for retrieving a http response trailer value for given "key". Only available during types.HttpContext.OnHttpResponseTrailers and types.HttpContext.OnHttpStreamDone. If multiple values are present for the key, the "first" value found in the host is returned. See https://github.com/envoyproxy/envoy/blob/72bf41fb0ecc039f196be02f534bfc2c9c69f348/source/extensions/common/wasm/context.cc#L762-L763 for detail.

func GetHttpResponseTrailers added in v0.0.5

func GetHttpResponseTrailers() ([][2]string, error)

GetHttpResponseTrailers is used for retrieving http response trailers. Only available during types.HttpContext.OnHttpResponseTrailers and types.HttpContext.OnHttpStreamDone.

func GetPluginConfiguration added in v0.0.5

func GetPluginConfiguration(size int) ([]byte, error)

GetPluginConfiguration is used for retrieving configurations ginve in the "config.configuration" field. This hostcall is only available during types.PluginContext.OnPluginStart call. "size" argument specifies homw many bytes you want to read. Set it to "pluginConfigurationSize" given in OnVMStart.

func GetProperty added in v0.0.5

func GetProperty(path []string) ([]byte, error)

GetProperty is used for retrieving property/metadata in the host for a given path. Available path and properties depend on the host implementations. For Envoy, prefer refer to https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/advanced/attributes

func GetSharedData added in v0.0.5

func GetSharedData(key string) (value []byte, cas uint32, err error)

GetSharedData is used for retrieving the value for given "key". Returned "cas" is be used for SetSharedData on that key for thread-safe updates.

func GetUpstreamData added in v0.0.5

func GetUpstreamData(start, maxSize int) ([]byte, error)

GetDownstreamData can be used for retrieving upstream tcp data in buffered in the host. Returned bytes begining from "start" to "start" +"maxSize" in the buffer. Only available during types.TcpContext.OnUpstreamData.

func GetVMConfiguration added in v0.0.5

func GetVMConfiguration(size int) ([]byte, error)

GetVMConfiguration is used for retrieving configurations ginve in the "vm_config.configuration" field. This hostcall is only available during types.PluginContext.OnVMStart call. "size" argument specifies homw many bytes you want to read. Set it to "vmConfigurationSize" given in OnVMStart.

func LogCritical

func LogCritical(msg string)

LogTracef emit a message as a log with Critical log level.

func LogCriticalf added in v0.0.4

func LogCriticalf(format string, args ...interface{})

LogCriticalf formats according to a format specifier and emit as a log with Critical log level.

func LogDebug

func LogDebug(msg string)

LogTracef emit a message as a log with Debug log level.

func LogDebugf added in v0.0.4

func LogDebugf(format string, args ...interface{})

LogDebugf formats according to a format specifier and emit as a log with Debug log level.

func LogError

func LogError(msg string)

LogTracef emit a message as a log with Error log level.

func LogErrorf added in v0.0.4

func LogErrorf(format string, args ...interface{})

LogErrorf formats according to a format specifier and emit as a log with Error log level.

func LogInfo

func LogInfo(msg string)

LogTracef emit a message as a log with Info log level.

func LogInfof added in v0.0.4

func LogInfof(format string, args ...interface{})

LogInfof formats according to a format specifier and emit as a log with Info log level.

func LogTrace

func LogTrace(msg string)

LogTracef emit a message as a log with Trace log level.

func LogTracef added in v0.0.4

func LogTracef(format string, args ...interface{})

LogTracef formats according to a format specifier and emit as a log with Trace log level.

func LogWarn

func LogWarn(msg string)

LogTracef emit a message as a log with Warn log level.

func LogWarnf added in v0.0.4

func LogWarnf(format string, args ...interface{})

LogWarnf formats according to a format specifier and emit as a log with Warn log level.

func PluginDone added in v0.3.0

func PluginDone()

PluginDone must be callsed when OnPluginDone returns false indicating that the plugin is in pending state right before deletion by hosts. Only available for types.PluginContext.

func PrependDownstreamData added in v0.2.0

func PrependDownstreamData(data []byte) error

PrependDownstreamData prepends the given bytes to the downstream tcp data in buffered in the host. Only available during types.TcpContext.OnDownstreamData.

func PrependHttpRequestBody added in v0.2.0

func PrependHttpRequestBody(data []byte) error

PrependHttpRequestBody prepends the given bytes to the http request body buffer. Only available during types.HttpContext.OnHttpRequestBody. Please note that you must remove "content-length" header during OnHttpRequestHeaders. Otherwise, the wrong content-length would be sent to the upstream, and might result in client crash.

func PrependHttpResponseBody added in v0.2.0

func PrependHttpResponseBody(data []byte) error

PrependHttpResponseBody prepends the given bytes to the http response body buffer. Only available during types.HttpContext.OnHttpResponseBody. Please note that you must remove "content-length" header during OnHttpResponseHeaders. Otherwise, the wrong content-length would be sent to the upstream, and might result in client crash.

func PrependUpstreamData added in v0.2.0

func PrependUpstreamData(data []byte) error

PrependUpstreamData prepends the given bytes to the upstream tcp data in buffered in the host. Only available during types.TcpContext.OnUpstreamData.

func RegisterSharedQueue added in v0.0.5

func RegisterSharedQueue(name string) (ququeID uint32, err error)

RegisterSharedQueue registers the shared queue on this plugin context. "Register" means that OnQueueReady is called for this plugin context whenever a new item is enqueued on that queueID. Only available for types.PluginContext. The returned ququeID can be used for Enqueue/DequeueSharedQueue. Note that "name" must be unique across all Wasm VMs which share a same "vm_id". That means you can use "vm_id" can be used for separating shared queue namespace.

func RemoveHttpRequestHeader added in v0.0.5

func RemoveHttpRequestHeader(key string) error

GetHttpRequestHeader is used for retrieving a http request header value for given "key". Only available during types.HttpContext.OnHttpRequestHeaders.

func RemoveHttpRequestTrailer added in v0.0.5

func RemoveHttpRequestTrailer(key string) error

RemoveHttpRequestTrailer removes all the values for given "key" from request trailers. Only available during types.HttpContext.OnHttpRequestTrailers.

func RemoveHttpResponseHeader added in v0.0.5

func RemoveHttpResponseHeader(key string) error

RemoveHttpResponseHeader removes all the values for given "key" from response headers. Only available during types.HttpContext.OnHttpResponseHeaders.

func RemoveHttpResponseTrailer added in v0.0.5

func RemoveHttpResponseTrailer(key string) error

RemoveHttpResponseTrailer removes all the values for given "key" from response trailers. Only available during types.HttpContext.OnHttpResponseTrailers.

func ReplaceDownstreamData added in v0.2.0

func ReplaceDownstreamData(data []byte) error

ReplaceDownstreamData replaces the downstream tcp data in buffered in the host with the given bytes. Only available during types.TcpContext.OnDownstreamData.

func ReplaceHttpRequestBody added in v0.2.0

func ReplaceHttpRequestBody(data []byte) error

ReplaceHttpRequestBody replaces the http request body buffer with the given bytes. Only available during types.HttpContext.OnHttpRequestBody. Please note that you must remove "content-length" header during OnHttpRequestHeaders. Otherwise, the wrong content-length would be sent to the upstream, and might result in client crash, if the size of the data differs from the original one.

func ReplaceHttpRequestHeader added in v0.3.0

func ReplaceHttpRequestHeader(key, value string) error

ReplaceHttpRequestHeader replaces a value for given "key" from request headers. Only available during types.HttpContext.OnHttpRequestHeaders. If multiple values are present for the key, only the "first" value in the host is replaced. See https://github.com/envoyproxy/envoy/blob/72bf41fb0ecc039f196be02f534bfc2c9c69f348/envoy/http/header_map.h#L547-L549 for detail.

func ReplaceHttpRequestHeaders added in v0.3.0

func ReplaceHttpRequestHeaders(headers [][2]string) error

ReplaceHttpRequestHeaders is used for replacing http request headers with given headers. Only available during types.HttpContext.OnHttpRequestHeaders.

func ReplaceHttpRequestTrailer added in v0.3.0

func ReplaceHttpRequestTrailer(key, value string) error

ReplaceHttpRequestTrailer replaces a value for given "key" from request trailers. Only available during types.HttpContext.OnHttpRequestTrailers. If multiple values are present for the key, only the "first" value in the host is replaced. See https://github.com/envoyproxy/envoy/blob/72bf41fb0ecc039f196be02f534bfc2c9c69f348/envoy/http/header_map.h#L547-L549 for detail.

func ReplaceHttpRequestTrailers added in v0.3.0

func ReplaceHttpRequestTrailers(trailers [][2]string) error

ReplaceHttpRequestTrailers is used for replacing http request trailers with given headers. Only available during types.HttpContext.OnHttpRequestTrailers.

func ReplaceHttpResponseBody added in v0.2.0

func ReplaceHttpResponseBody(data []byte) error

ReplaceHttpResponseBody replaces the http response body buffer with the given bytes. Only available during types.HttpContext.OnHttpResponseBody. Please note that you must remove "content-length" header during OnHttpResponseHeaders. Otherwise, the wrong content-length would be sent to the upstream, and might result in client crash if the size of the data differs from the original one.

func ReplaceHttpResponseHeader added in v0.3.0

func ReplaceHttpResponseHeader(key, value string) error

ReplaceHttpResponseHeader replaces a value for given "key" from response headers. Only available during types.HttpContext.OnHttpResponseHeaders. If multiple values are present for the key, only the "first" value in the host is replaced. See https://github.com/envoyproxy/envoy/blob/72bf41fb0ecc039f196be02f534bfc2c9c69f348/envoy/http/header_map.h#L547-L549 for detail.

func ReplaceHttpResponseHeaders added in v0.3.0

func ReplaceHttpResponseHeaders(headers [][2]string) error

ReplaceHttpResponseHeaders is used for replacing http response headers with given headers. Only available during types.HttpContext.OnHttpResponseHeaders.

func ReplaceHttpResponseTrailer added in v0.3.0

func ReplaceHttpResponseTrailer(key, value string) error

ReplaceHttpResponseHeader replaces a value for given "key" from response trailers. Only available during types.HttpContext.OnHttpResponseHeaders. If multiple values are present for the key, only the "first" value in the host is replaced. See https://github.com/envoyproxy/envoy/blob/72bf41fb0ecc039f196be02f534bfc2c9c69f348/envoy/http/header_map.h#L547-L549 for detail.

func ReplaceHttpResponseTrailers added in v0.3.0

func ReplaceHttpResponseTrailers(trailers [][2]string) error

ReplaceHttpResponseTrailers is used for replacing http response trailers with given headers. Only available during types.HttpContext.OnHttpResponseTrailers.

func ReplaceUpstreamData added in v0.2.0

func ReplaceUpstreamData(data []byte) error

ReplaceUpstreamData replaces the upstream tcp data in buffered in the host with the given bytes. Only available during types.TcpContext.OnUpstreamData.

func ResolveSharedQueue added in v0.0.5

func ResolveSharedQueue(vmID, queueName string) (ququeID uint32, err error)

ResolveSharedQueue acquires the queueID for the given vm_id and queue name. The returned ququeID can be used for Enqueue/DequeueSharedQueue.

func ResumeHttpRequest added in v0.0.5

func ResumeHttpRequest() error

ResumeHttpRequest can be used for resuming Http request processing which is stopped after returning types.Action.Pause. Only available during types.HttpContext.

func ResumeHttpResponse added in v0.0.5

func ResumeHttpResponse() error

ResumeHttpResponse can be used for resuming Http response processing which is stopped after returning types.Action.Pause. Only available during types.HttpContext.

func SendHttpResponse added in v0.0.5

func SendHttpResponse(statusCode uint32, headers [][2]string, body []byte) error

SendHttpResponse sends a http response to the downstream with given information (headers, statuscode, body). This call cannot be used outside types.HttpContext otherwise an error should be returned. Also please note that this cannot be used after types.HttpContext.OnHttpResponseHeaders returns Continue since in that case, the response headers may have already arrived at the downstream and there is no way to override the already sent headers. types.Action.Pause *must* be returned after invoking this function, in order to stop further processing of original http request/response.

func SetProperty added in v0.0.5

func SetProperty(path []string, data []byte) error

SetProperty is used for setting property/metadata in the host for a given path. Available path and properties depend on the host implementations. For Envoy, prefer refer to https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/advanced/attributes

func SetSharedData added in v0.0.5

func SetSharedData(key string, data []byte, cas uint32) error

SetSharedData is used for seting key-value pairs in the shared data storage which is defined per "vm_config.vm_id" in the hosts.

ErrorStatusCasMismatch will be returned when a given CAS value is mismatched with the current value. That indicates that other Wasm VMs has already succeeded to set a value on the same key and the current CAS for the key is incremented. Having retry logic in the face of this error is recommended.

Setting cas = 0 will never return ErrorStatusCasMismatch and always succeed, but it is not thread-safe, i.e. maybe another VM has already incremented the value and the value you see is already different from the one stored by the time when you call this function.

func SetTickPeriodMilliSeconds added in v0.0.5

func SetTickPeriodMilliSeconds(millSec uint32) error

SetTickPeriodMilliSeconds sets the tick interval of types.PluginContext.OnTick calls. Only available for types.PluginContext.

func SetVMContext added in v0.13.0

func SetVMContext(ctx types.VMContext)

SetVMContext is the entrypoint for setting up this entire Wasm VM. Please make sure that this entrypoint be called during "main()" function, otherwise this VM would fail.

Types

type MetricCounter

type MetricCounter uint32

MetricCounter represents a counter metric. Use DefineCounterMetric for initialization.

func DefineCounterMetric

func DefineCounterMetric(name string) MetricCounter

DefineCounterMetric returnes MetricCounter for a name.

func (MetricCounter) Increment

func (m MetricCounter) Increment(offset uint64)

Increment increments the current value by a offset for this counter.

func (MetricCounter) Value added in v0.13.0

func (m MetricCounter) Value() uint64

Value returnes the current value for this counter.

type MetricGauge

type MetricGauge uint32

MetricGauge represents a gauge metric. Use DefineGaugeMetric for initialization.

func DefineGaugeMetric

func DefineGaugeMetric(name string) MetricGauge

DefineCounterMetric returnes MetricGauge for a name.

func (MetricGauge) Add

func (m MetricGauge) Add(offset int64)

Add adds a offset to the current value for this counter.

func (MetricGauge) Value added in v0.13.0

func (m MetricGauge) Value() int64

Value returnes the current value for this gauge.

type MetricHistogram

type MetricHistogram uint32

MetricHistogram represents a histogram metric. Use DefineHistogramMetric for initialization.

func DefineHistogramMetric

func DefineHistogramMetric(name string) MetricHistogram

DefineHistogramMetric returnes MetricHistogram for a name.

func (MetricHistogram) Record

func (m MetricHistogram) Record(value uint64)

Record records a value for this histogram.

func (MetricHistogram) Value added in v0.13.0

func (m MetricHistogram) Value() uint64

Value returnes the current value for this histogram.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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