#include "envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.pb.h"
#include "envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.pb.validate.h"
* This class is responsible for performing matching and updating match data when a match tree is
* configured for the associated filter. When not using a match tree, only minimal overhead (i.e.
absl::string_view filterConfigName() const override { return filter_context_.config_name; }
// either because [de|en]codeHeaders() of the current filter returns StopAllIteration or because
// This function is called after the filter calls decodeHeaders() to drain accumulated metadata.
void addDownstreamWatermarkCallbacks(DownstreamWatermarkCallbacks& watermark_callbacks) override;
absl::optional<Upstream::LoadBalancerContext::OverrideHost> upstreamOverrideHost() const override;
// Encoding end_stream by a non-terminal filters (i.e. cache filter) always causes the decoding to
// be stopped even if independent half-close is enabled. For simplicity, independent half-close is
* Passes ownership of received response headers to the parent. This may be called multiple times
* Passes ownership of received response trailers to the parent. This may be called multiple times
* headers have been received but before headers have been encoded), so it is not safe in general
* Note that response trailers might be set multiple times, so it is not safe in general to assume
* XFF handling. This is required to avoid providing stream info with a non-const connection info
const AccessLog::InstanceSharedPtrVector& accessLogHandlers() { return access_log_handlers_; }
virtual bool decoderObservedEndStream() const { return state_.observed_decode_end_stream_; }
// server or Envoy's local reply) before iteration of the encoder filter chain begins. This flag
manager_.decoder_filters_.entries_.emplace_back(std::make_unique<ActiveStreamDecoderFilter>(
manager_.encoder_filters_.entries_.emplace_back(std::make_unique<ActiveStreamEncoderFilter>(
manager_.encoder_filters_.entries_.emplace_back(std::make_unique<ActiveStreamEncoderFilter>(
void setFilterConfigName(absl::string_view name) override { filter_config_name_ = name; }
void addDecodedData(ActiveStreamDecoderFilter& filter, Buffer::Instance& data, bool streaming);
void decodeHeaders(ActiveStreamDecoderFilter* filter, RequestHeaderMap& headers, bool end_stream);
void addEncodedData(ActiveStreamEncoderFilter& filter, Buffer::Instance& data, bool streaming);
// Stores metadata added in the decoding filter that is being processed. Will be cleared before
static constexpr uint32_t IsDecodingMask = DecodeHeaders | DecodeData | DecodeMetadata | DecodeTrailers;
static constexpr uint32_t IsEncodingMask = EncodeHeaders | Encode1xxHeaders | EncodeData | EncodeMetadata | EncodeTrailers;
bool decoderObservedEndStream() const override { return state_.observed_decode_end_stream_; }