[−][src]Trait envoy_sdk::extension::filter::http::HttpFilter
An interface of the Envoy
HTTP Filter
extension.
HTTP Filter
operates on a single HTTP stream, i.e. request/response pair.
When Envoy
accepts a new connection, a dedicated HTTP Filter
instance is created for it.
HTTP Filter
in Envoy
is a stateful object.
NOTE: This trait MUST NOT panic. If a filter invocation cannot proceed
normally, it should return Result::Err(x)
. In that case, Envoy SDK
will be able to terminate
only the affected HTTP request by sending a response with the HTTP Status code
500 (Internal Server Error)
.
For comparison, if the extension chooses to panic, this will, at best, affect all ongoing HTTP requests
handled by that extension, and, at worst, will crash Envoy
entirely (as of July 2020).
Provided methods
fn on_request_headers(
&mut self,
_num_headers: usize,
_ops: &dyn RequestHeadersOps
) -> Result<FilterHeadersStatus>
&mut self,
_num_headers: usize,
_ops: &dyn RequestHeadersOps
) -> Result<FilterHeadersStatus>
fn on_request_body(
&mut self,
_body_size: usize,
_end_of_stream: bool,
_ops: &dyn RequestBodyOps
) -> Result<FilterDataStatus>
&mut self,
_body_size: usize,
_end_of_stream: bool,
_ops: &dyn RequestBodyOps
) -> Result<FilterDataStatus>
fn on_request_trailers(
&mut self,
_num_trailers: usize,
_ops: &dyn RequestTrailersOps
) -> Result<FilterTrailersStatus>
&mut self,
_num_trailers: usize,
_ops: &dyn RequestTrailersOps
) -> Result<FilterTrailersStatus>
fn on_response_headers(
&mut self,
_num_headers: usize,
_ops: &dyn ResponseHeadersOps
) -> Result<FilterHeadersStatus>
&mut self,
_num_headers: usize,
_ops: &dyn ResponseHeadersOps
) -> Result<FilterHeadersStatus>
fn on_response_body(
&mut self,
_body_size: usize,
_end_of_stream: bool,
_ops: &dyn ResponseBodyOps
) -> Result<FilterDataStatus>
&mut self,
_body_size: usize,
_end_of_stream: bool,
_ops: &dyn ResponseBodyOps
) -> Result<FilterDataStatus>
fn on_response_trailers(
&mut self,
_num_trailers: usize,
_ops: &dyn ResponseTrailersOps
) -> Result<FilterTrailersStatus>
&mut self,
_num_trailers: usize,
_ops: &dyn ResponseTrailersOps
) -> Result<FilterTrailersStatus>
fn on_exchange_complete(&mut self) -> Result<()>
Called when HTTP stream is complete.
This moment happens before Access Loggers
get called.
fn on_http_call_response(
&mut self,
_request_id: HttpClientRequestHandle,
_num_headers: usize,
_body_size: usize,
_num_trailers: usize,
_filter_ops: &dyn Ops,
_http_client_ops: &dyn HttpClientResponseOps
) -> Result<()>
&mut self,
_request_id: HttpClientRequestHandle,
_num_headers: usize,
_body_size: usize,
_num_trailers: usize,
_filter_ops: &dyn Ops,
_http_client_ops: &dyn HttpClientResponseOps
) -> Result<()>
Called when the async HTTP request made through Envoy HTTP Client API
is complete.
Arguments
request_id
- opaque identifier of the request that is now complete.num_headers
- number of headers in the response.body_size
- size of the response body.num_trailers
- number of tarilers in the response.filter_ops
- atrait object
through whichHTTP Filter
can access data of the HTTP stream it proxies.http_client_ops
- atrait object
through whichNetwork Filter
can access data of the response received byHttpClient
, including headers, body and trailers.