opentelemetry-collector/extension/extensionmiddleware/server.go

47 lines
1.3 KiB
Go

// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
package extensionmiddleware // import "go.opentelemetry.io/collector/extension/extensionmiddleware"
import (
"net/http"
"google.golang.org/grpc"
)
// HTTPServer defines the interface for HTTP server middleware extensions.
type HTTPServer interface {
// GetHTTPHandler wraps the provided base http.Handler.
GetHTTPHandler(base http.Handler) (http.Handler, error)
}
// GRPCServer defines the interface for gRPC server middleware extensions.
type GRPCServer interface {
// GetGRPCServerOptions returns options for a gRPC server.
GetGRPCServerOptions() ([]grpc.ServerOption, error)
}
var _ HTTPServer = (*GetHTTPHandlerFunc)(nil)
// GetHTTPHandlerFunc is a function that implements HTTPServer.
type GetHTTPHandlerFunc func(base http.Handler) (http.Handler, error)
func (f GetHTTPHandlerFunc) GetHTTPHandler(base http.Handler) (http.Handler, error) {
if f == nil {
return base, nil
}
return f(base)
}
var _ GRPCServer = (*GetGRPCServerOptionsFunc)(nil)
// GetGRPCServerOptionsFunc is a function that implements GRPCServer.
type GetGRPCServerOptionsFunc func() ([]grpc.ServerOption, error)
func (f GetGRPCServerOptionsFunc) GetGRPCServerOptions() ([]grpc.ServerOption, error) {
if f == nil {
return nil, nil
}
return f()
}