Documentation
¶
Overview ¶
Package server provides an implementation of a streaming xDS server.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Callbacks ¶
type Callbacks interface {
// OnStreamOpen is called once an xDS stream is open with a stream ID and the type URL (or "" for ADS).
// Returning an error will end processing and close the stream. OnStreamClosed will still be called.
OnStreamOpen(context.Context, int64, string) error
// OnStreamClosed is called immediately prior to closing an xDS stream with a stream ID.
OnStreamClosed(int64)
// OnStreamRequest is called once a request is received on a stream.
// Returning an error will end processing and close the stream. OnStreamClosed will still be called.
OnStreamRequest(int64, *envoy_service_discovery_v3.DiscoveryRequest) error
// OnStreamResponse is called immediately prior to sending a response on a stream.
OnStreamResponse(int64, *envoy_service_discovery_v3.DiscoveryRequest, *envoy_service_discovery_v3.DiscoveryResponse)
// OnFetchRequest is called for each Fetch request. Returning an error will end processing of the
// request and respond with an error.
OnFetchRequest(context.Context, *envoy_service_discovery_v3.DiscoveryRequest) error
// OnFetchResponse is called immediately prior to sending a response.
OnFetchResponse(*envoy_service_discovery_v3.DiscoveryRequest, *envoy_service_discovery_v3.DiscoveryResponse)
}
Callbacks is a collection of callbacks inserted into the server operation. The callbacks are invoked synchronously.
type HTTPGateway ¶
type HTTPGateway struct {
// Log is an optional log for errors in response write
Log log.Logger
// Server is the underlying gRPC server
Server Server
UrlToType map[string]string
}
HTTPGateway is a custom implementation of [gRPC gateway](https://github.com/grpc-ecosystem/grpc-gateway) specialized to Envoy xDS API.
func NewHTTPGateway ¶
func (*HTTPGateway) ServeHTTP ¶
func (h *HTTPGateway) ServeHTTP(resp http.ResponseWriter, req *http.Request)
type Server ¶
type Server interface {
// StreamEnvoyV3 is the streaming method for Evnoy V3 XDS
StreamEnvoyV3(
stream StreamEnvoyV3,
defaultTypeURL string,
) error
// StreamSolo is the streaming method for Solo discovery
StreamSolo(
stream StreamSolo,
defaultTypeURL string,
) error
// Fetch is the universal fetch method.
FetchEnvoyV3(
context.Context,
*envoy_service_discovery_v3.DiscoveryRequest,
) (*envoy_service_discovery_v3.DiscoveryResponse, error)
FetchSolo(
context.Context,
*sk_discovery.DiscoveryRequest,
) (*sk_discovery.DiscoveryResponse, error)
}
Server is a collection of handlers for streaming discovery requests.
type StreamEnvoyV3 ¶ added in v0.20.0
type StreamEnvoyV3 interface {
Send(response *envoy_service_discovery_v3.DiscoveryResponse) error
Recv() (*envoy_service_discovery_v3.DiscoveryRequest, error)
grpc.ServerStream
}
type StreamSolo ¶ added in v0.20.0
type StreamSolo interface {
Send(response *sk_discovery.DiscoveryResponse) error
Recv() (*sk_discovery.DiscoveryRequest, error)
grpc.ServerStream
}
type TypedResponse ¶
Click to show internal directories.
Click to hide internal directories.