package httpfilter
import "google.golang.org/grpc/internal/xds/httpfilter"
Package httpfilter contains interface definitions for xDS-based HTTP filters and a registry for filter builders.
Index ¶
- func Register(b Builder)
- func UnregisterForTesting(typeURL string)
- type Builder
- type ClientFilter
- type ClientFilterBuilder
- type FilterConfig
- type ServerFilter
- type ServerFilterBuilder
Functions ¶
func Register ¶
func Register(b Builder)
Register registers the HTTP Filter Builder with the registry. b.TypeURLs() will be used as the types for this filter.
NOTE: this function must only be called during initialization time (i.e. in an init() function), and is not thread-safe. If multiple filters are registered with the same type URL, the one registered last will take effect.
func UnregisterForTesting ¶
func UnregisterForTesting(typeURL string)
UnregisterForTesting unregisters the HTTP Filter Builder for testing purposes.
Types ¶
type Builder ¶
type Builder interface {
// TypeURLs are the proto message types supported by this filter. A filter
// will be registered by each of its supported message types.
TypeURLs() []string
// ParseFilterConfig parses the provided configuration proto.Message from
// the LDS configuration of this filter. This may be an anypb.Any, a
// udpa.type.v1.TypedStruct, or an xds.type.v3.TypedStruct for filters that
// do not accept a custom type. The resulting FilterConfig will later be
// passed to Build.
ParseFilterConfig(proto.Message) (FilterConfig, error)
// ParseFilterConfigOverride parses the provided override configuration
// proto.Message from the RDS override configuration of this filter. This
// may be an anypb.Any, a udpa.type.v1.TypedStruct, or an
// xds.type.v3.TypedStruct for filters that do not accept a custom type.
// The resulting FilterConfig will later be passed to Build.
ParseFilterConfigOverride(proto.Message) (FilterConfig, error)
// IsTerminal returns whether this Filter is terminal or not (i.e. it must
// be last filter in the filter chain).
IsTerminal() bool
}
Builder defines the parsing functionality of an HTTP filter. A Builder may optionally implement either ClientFilterBuilder or ServerFilterBuilder or both, indicating it is capable of working on the client side or server side or both, respectively.
func Get ¶
Get returns the HTTP Filter Builder registered with typeURL.
If no filter builder is register with typeURL, nil will be returned.
type ClientFilter ¶
type ClientFilter interface {
// BuildClientInterceptor uses the given FilterConfigs to produce an HTTP
// filter interceptor for clients. config will always be non-nil, but
// override may be nil if no override config exists for the filter.
//
// It is valid for this method to return a nil Interceptor and a nil error.
// In this case, the RPC will not be intercepted by this filter.
BuildClientInterceptor(config, override FilterConfig) (iresolver.ClientInterceptor, error)
// Close is called when the filter is no longer needed.
Close()
}
ClientFilter represents the actual filter implementation on the client side. Implementations are free to maintain internal state when required, and share it across interceptors. Filter instances are retained by the resolver as long as they are present in the LDS configuration.
type ClientFilterBuilder ¶
type ClientFilterBuilder interface {
// BuildClientFilter constructs a ClientFilter.
BuildClientFilter() ClientFilter
}
ClientFilterBuilder is an optional interface that a Builder can implement to indicate its capability to build client-side filters.
type FilterConfig ¶
type FilterConfig interface {
// contains filtered or unexported methods
}
FilterConfig represents an opaque data structure holding configuration for a filter. Embed this interface to implement it.
type ServerFilter ¶
type ServerFilter interface {
// BuildServerInterceptor uses the given FilterConfigs to produce
// an HTTP filter interceptor for servers. config will always be non-nil,
// but override may be nil if no override config exists for the filter.
//
// It is valid for this method to return a nil Interceptor and a nil error.
// In this case, the RPC will not be intercepted by this filter.
BuildServerInterceptor(config, override FilterConfig) (iresolver.ServerInterceptor, error)
// Close is called when the filter is no longer needed.
Close()
}
ServerFilter represents the actual filter implementation on the server side. Implementations are free to maintain internal state when required, and share it across interceptors. Filter instances are retained by the server as long as they are present in any of the filter chains in the LDS configuration.
type ServerFilterBuilder ¶
type ServerFilterBuilder interface {
// BuildServerFilter constructs a ServerFilter.
BuildServerFilter() ServerFilter
}
ServerFilterBuilder is an optional interface that a Builder can implement to indicate its capability to build server-side filters.
Source Files ¶
httpfilter.go
Directories ¶
| Path | Synopsis |
|---|---|
| internal/xds/httpfilter/fault | Package fault implements the Envoy Fault Injection HTTP filter. |
| internal/xds/httpfilter/rbac | Package rbac implements the Envoy RBAC HTTP filter. |
| internal/xds/httpfilter/router | Package router implements the Envoy Router HTTP filter. |
- Version
- v1.82.0-dev
- Published
- Apr 15, 2026
- Platform
- js/wasm
- Imports
- 2 packages
- Last checked
- 1 hour ago –
Tools for package owners.