grpctool

package
v17.6.0-rc2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 22, 2024 License: MIT Imports: 56 Imported by: 0

Documentation

Index

Constants

View Source
const (
	HTTPRequestHeaderFieldNumber      protoreflect.FieldNumber = 1
	HTTPRequestDataFieldNumber        protoreflect.FieldNumber = 2
	HTTPRequestTrailerFieldNumber     protoreflect.FieldNumber = 3
	HTTPRequestUpgradeDataFieldNumber protoreflect.FieldNumber = 4

	HTTPResponseHeaderFieldNumber      protoreflect.FieldNumber = 1
	HTTPResponseDataFieldNumber        protoreflect.FieldNumber = 2
	HTTPResponseTrailerFieldNumber     protoreflect.FieldNumber = 3
	HTTPResponseUpgradeDataFieldNumber protoreflect.FieldNumber = 4
)
View Source
const (
	MetadataAuthorization = "authorization"
)

Variables

View Source
var (
	HTTPRequestStreamVisitor  = NewLazyStreamVisitor(&HttpRequest{})
	HTTPResponseStreamVisitor = NewLazyStreamVisitor(&HttpResponse{})
)
View Source
var File_internal_tool_grpctool_grpctool_proto protoreflect.FileDescriptor
View Source
var (
	ProtoCodec = encoding.GetCodecV2(protoenc.Name)
)

Functions

func AddMaxConnectionAgeContext

func AddMaxConnectionAgeContext(ctx, ageCtx context.Context) context.Context

func HandleIOError

func HandleIOError(msg string, err error) error

func HostWithPort

func HostWithPort(u *url.URL) string

HostWithPort adds port if it was not specified in a URL with a "grpc" or "grpcs" scheme.

func IsStatusError

func IsStatusError(err error) bool

func MaxConnectionAge2GRPCKeepalive

func MaxConnectionAge2GRPCKeepalive(auxCtx context.Context, maxConnectionAge time.Duration) (grpc.ServerOption, stats.Handler)

func MaxConnectionAgeContextFromStreamContext

func MaxConnectionAgeContextFromStreamContext(streamCtx context.Context) context.Context

func MaybeMTLSCreds added in v17.4.0

func MaybeMTLSCreds(certFile, keyFile, mtlsClientCAFile string, mtlsEnabled bool) ([]grpc.ServerOption, error)

func MaybeTLSCreds added in v17.1.0

func MaybeTLSCreds(certFile, keyFile string) ([]grpc.ServerOption, error)

func MetaToValuesMap

func MetaToValuesMap(meta metadata.MD) map[string]*prototool.HeaderValues

func NewHeaderMetadata

func NewHeaderMetadata(header http.Header, insecure bool) credentials.PerRPCCredentials

func NewLazyStreamVisitor

func NewLazyStreamVisitor(streamMessage proto.Message) func() *StreamVisitor

func NewServerMaxConnAgeStatsHandler

func NewServerMaxConnAgeStatsHandler(auxCtx context.Context, maxConnectionAge time.Duration) stats.Handler

func NewTokenCredentials

func NewTokenCredentials(token api.AgentToken, insecure bool) credentials.PerRPCCredentials

func RequestCanceled

func RequestCanceled(err error) bool

func RequestCanceledOrTimedOut

func RequestCanceledOrTimedOut(err error) bool

func RequestTimedOut

func RequestTimedOut(err error) bool

func SplitGRPCMethod

func SplitGRPCMethod(fullMethodName string) (string, string)

func StartServer

func StartServer(stage stager.Stage, server *grpc.Server, listener func() (net.Listener, error), beforeStop, afterStop func())

func StatusErrorFromContext

func StatusErrorFromContext(ctx context.Context, msg string) error

StatusErrorFromContext is a version of status.FromContextError(ctx.Err()).Err() that allows to augment the error message.

func StreamClientLimitingInterceptor

func StreamClientLimitingInterceptor(limiter ClientLimiter) grpc.StreamClientInterceptor

StreamClientLimitingInterceptor returns a new stream server interceptor that performs rate limiting on the request.

func StreamClientValidatingInterceptor

func StreamClientValidatingInterceptor(v prototool.Validator) grpc.StreamClientInterceptor

StreamClientValidatingInterceptor is a stream client interceptor that performs response stream validation.

func StreamServerErrorReporterInterceptor

func StreamServerErrorReporterInterceptor(errorReporter ServerErrorReporter) grpc.StreamServerInterceptor

func StreamServerLimitingInterceptor

func StreamServerLimitingInterceptor(limiter ServerLimiter) grpc.StreamServerInterceptor

StreamServerLimitingInterceptor returns a new stream server interceptor that performs limiting based on the given context

func StreamServerValidatingInterceptor added in v17.4.0

func StreamServerValidatingInterceptor(v prototool.Validator) grpc.StreamServerInterceptor

StreamServerValidatingInterceptor is a stream client interceptor that performs response stream validation.

func UnaryClientLimitingInterceptor

func UnaryClientLimitingInterceptor(limiter ClientLimiter) grpc.UnaryClientInterceptor

UnaryClientLimitingInterceptor returns a new unary client interceptor that performs request rate limiting.

func UnaryClientValidatingInterceptor

func UnaryClientValidatingInterceptor(v prototool.Validator) grpc.UnaryClientInterceptor

UnaryClientValidatingInterceptor is a unary client interceptor that performs response validation.

func UnaryServerErrorReporterInterceptor

func UnaryServerErrorReporterInterceptor(errorReporter ServerErrorReporter) grpc.UnaryServerInterceptor

func UnaryServerLimitingInterceptor

func UnaryServerLimitingInterceptor(limiter ServerLimiter) grpc.UnaryServerInterceptor

UnaryServerLimitingInterceptor returns a new unary server interceptor that performs limiting based on the given context

func UnaryServerValidatingInterceptor added in v17.4.0

func UnaryServerValidatingInterceptor(v prototool.Validator) grpc.UnaryServerInterceptor

UnaryServerValidatingInterceptor is a unary client interceptor that performs response validation.

func ValuesMapToMeta

func ValuesMapToMeta(vals map[string]*prototool.HeaderValues) metadata.MD

Types

type AggregateServer added in v17.1.0

type AggregateServer []GRPCServer

func (AggregateServer) GetServiceInfo added in v17.1.0

func (s AggregateServer) GetServiceInfo() map[string]grpc.ServiceInfo

func (AggregateServer) RegisterService added in v17.1.0

func (s AggregateServer) RegisterService(desc *grpc.ServiceDesc, impl any)

type CheckHeader added in v17.0.1

type CheckHeader func(statusCode int32, header http.Header) error

CheckHeader checks the status code and header of the upstream server's HTTP response. It may return an error or alter the header.

type ClientLimiter

type ClientLimiter interface {
	// Wait blocks until limiter permits an event to happen.
	// It returns an error if the Context is
	// canceled, or the expected wait time exceeds the Context's Deadline.
	Wait(context.Context) error
}

ClientLimiter defines the interface to perform client-side request rate limiting. You can use golang.org/x/time/rate.Limiter as an implementation of this interface.

type DialListener

type DialListener struct {
	// contains filtered or unexported fields
}

func NewDialListener

func NewDialListener() *DialListener

func (*DialListener) Accept

func (l *DialListener) Accept() (net.Conn, error)

func (*DialListener) Addr

func (l *DialListener) Addr() net.Addr

func (*DialListener) Close

func (l *DialListener) Close() error

func (*DialListener) DialContext

func (l *DialListener) DialContext(ctx context.Context, addr string) (net.Conn, error)

type DoResponse

type DoResponse struct {
	// Resp is the server's response to a request.
	Resp *http.Response
	// UpgradeConn is the underlying network connection to the server.
	// May be nil if request was not an Upgrade request or if server decided not to switch protocols
	// (non-101 response status code).
	UpgradeConn net.Conn
	// ConnReader is a buffered reader, wrapping UpgradeConn. Is set when UpgradeConn is set.
	// Must be used for reading as it may contain buffered bytes that are no longer available directly via UpgradeConn.
	ConnReader *bufio.Reader
}

type EOFCallback

type EOFCallback func() error

type ErrResp

type ErrResp struct {
	StatusCode int32
	Msg        string
	// Err can be nil.
	Err error
}

type GRPCServer added in v17.1.0

type GRPCServer interface {
	grpc.ServiceRegistrar
	reflection.ServiceInfoProvider
}

type HTTPDo

type HTTPDo func(ctx context.Context, header *HttpRequest_Header, body io.Reader) (DoResponse, error)

HTTPDo makes an HTTP request and returns a response. If an HTTP upgrade was requested, the underlying network connection is also returned. Implementations that don't support Upgrade should return an error.

type HandleIOErrorFunc

type HandleIOErrorFunc func(msg string, err error) error

type HandleProcessingErrorFunc

type HandleProcessingErrorFunc func(msg string, err error)

type HttpRequest

type HttpRequest struct {

	// Types that are assignable to Message:
	//
	//	*HttpRequest_Header_
	//	*HttpRequest_Data_
	//	*HttpRequest_Trailer_
	//	*HttpRequest_UpgradeData_
	Message isHttpRequest_Message `protobuf_oneof:"message"`
	// contains filtered or unexported fields
}

func (*HttpRequest) Descriptor deprecated

func (*HttpRequest) Descriptor() ([]byte, []int)

Deprecated: Use HttpRequest.ProtoReflect.Descriptor instead.

func (*HttpRequest) GetData

func (x *HttpRequest) GetData() *HttpRequest_Data

func (*HttpRequest) GetHeader

func (x *HttpRequest) GetHeader() *HttpRequest_Header

func (*HttpRequest) GetMessage

func (m *HttpRequest) GetMessage() isHttpRequest_Message

func (*HttpRequest) GetTrailer

func (x *HttpRequest) GetTrailer() *HttpRequest_Trailer

func (*HttpRequest) GetUpgradeData

func (x *HttpRequest) GetUpgradeData() *HttpRequest_UpgradeData

func (*HttpRequest) ProtoMessage

func (*HttpRequest) ProtoMessage()

func (*HttpRequest) ProtoReflect

func (x *HttpRequest) ProtoReflect() protoreflect.Message

func (*HttpRequest) Reset

func (x *HttpRequest) Reset()

func (*HttpRequest) String

func (x *HttpRequest) String() string

type HttpRequest_Data

type HttpRequest_Data struct {
	Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
	// contains filtered or unexported fields
}

func (*HttpRequest_Data) Descriptor deprecated

func (*HttpRequest_Data) Descriptor() ([]byte, []int)

Deprecated: Use HttpRequest_Data.ProtoReflect.Descriptor instead.

func (*HttpRequest_Data) GetData

func (x *HttpRequest_Data) GetData() []byte

func (*HttpRequest_Data) ProtoMessage

func (*HttpRequest_Data) ProtoMessage()

func (*HttpRequest_Data) ProtoReflect

func (x *HttpRequest_Data) ProtoReflect() protoreflect.Message

func (*HttpRequest_Data) Reset

func (x *HttpRequest_Data) Reset()

func (*HttpRequest_Data) String

func (x *HttpRequest_Data) String() string

type HttpRequest_Data_

type HttpRequest_Data_ struct {
	Data *HttpRequest_Data `protobuf:"bytes,2,opt,name=data,proto3,oneof"`
}

type HttpRequest_Header

type HttpRequest_Header struct {
	Request       *prototool.HttpRequest `protobuf:"bytes,1,opt,name=request,proto3" json:"request,omitempty"`
	Extra         *anypb.Any             `protobuf:"bytes,2,opt,name=extra,proto3" json:"extra,omitempty"`
	ContentLength *int64                 `protobuf:"varint,3,opt,name=content_length,json=contentLength,proto3,oneof" json:"content_length,omitempty"`
	// contains filtered or unexported fields
}

func (*HttpRequest_Header) Descriptor deprecated

func (*HttpRequest_Header) Descriptor() ([]byte, []int)

Deprecated: Use HttpRequest_Header.ProtoReflect.Descriptor instead.

func (*HttpRequest_Header) GetContentLength

func (x *HttpRequest_Header) GetContentLength() int64

func (*HttpRequest_Header) GetExtra

func (x *HttpRequest_Header) GetExtra() *anypb.Any

func (*HttpRequest_Header) GetRequest

func (x *HttpRequest_Header) GetRequest() *prototool.HttpRequest

func (*HttpRequest_Header) IsRequestWithoutBody

func (x *HttpRequest_Header) IsRequestWithoutBody() bool

IsRequestWithoutBody returns if the request the header belongs to is expected to have no body

func (*HttpRequest_Header) ProtoMessage

func (*HttpRequest_Header) ProtoMessage()

func (*HttpRequest_Header) ProtoReflect

func (x *HttpRequest_Header) ProtoReflect() protoreflect.Message

func (*HttpRequest_Header) Reset

func (x *HttpRequest_Header) Reset()

func (*HttpRequest_Header) String

func (x *HttpRequest_Header) String() string

type HttpRequest_Header_

type HttpRequest_Header_ struct {
	Header *HttpRequest_Header `protobuf:"bytes,1,opt,name=header,proto3,oneof"`
}

type HttpRequest_Trailer

type HttpRequest_Trailer struct {
	// contains filtered or unexported fields
}

func (*HttpRequest_Trailer) Descriptor deprecated

func (*HttpRequest_Trailer) Descriptor() ([]byte, []int)

Deprecated: Use HttpRequest_Trailer.ProtoReflect.Descriptor instead.

func (*HttpRequest_Trailer) ProtoMessage

func (*HttpRequest_Trailer) ProtoMessage()

func (*HttpRequest_Trailer) ProtoReflect

func (x *HttpRequest_Trailer) ProtoReflect() protoreflect.Message

func (*HttpRequest_Trailer) Reset

func (x *HttpRequest_Trailer) Reset()

func (*HttpRequest_Trailer) String

func (x *HttpRequest_Trailer) String() string

type HttpRequest_Trailer_

type HttpRequest_Trailer_ struct {
	Trailer *HttpRequest_Trailer `protobuf:"bytes,3,opt,name=trailer,proto3,oneof"`
}

type HttpRequest_UpgradeData

type HttpRequest_UpgradeData struct {
	Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
	// contains filtered or unexported fields
}

func (*HttpRequest_UpgradeData) Descriptor deprecated

func (*HttpRequest_UpgradeData) Descriptor() ([]byte, []int)

Deprecated: Use HttpRequest_UpgradeData.ProtoReflect.Descriptor instead.

func (*HttpRequest_UpgradeData) GetData

func (x *HttpRequest_UpgradeData) GetData() []byte

func (*HttpRequest_UpgradeData) ProtoMessage

func (*HttpRequest_UpgradeData) ProtoMessage()

func (*HttpRequest_UpgradeData) ProtoReflect

func (x *HttpRequest_UpgradeData) ProtoReflect() protoreflect.Message

func (*HttpRequest_UpgradeData) Reset

func (x *HttpRequest_UpgradeData) Reset()

func (*HttpRequest_UpgradeData) String

func (x *HttpRequest_UpgradeData) String() string

type HttpRequest_UpgradeData_

type HttpRequest_UpgradeData_ struct {
	UpgradeData *HttpRequest_UpgradeData `protobuf:"bytes,4,opt,name=upgradeData,proto3,oneof"`
}

type HttpResponse

type HttpResponse struct {

	// Types that are assignable to Message:
	//
	//	*HttpResponse_Header_
	//	*HttpResponse_Data_
	//	*HttpResponse_Trailer_
	//	*HttpResponse_UpgradeData_
	Message isHttpResponse_Message `protobuf_oneof:"message"`
	// contains filtered or unexported fields
}

func (*HttpResponse) Descriptor deprecated

func (*HttpResponse) Descriptor() ([]byte, []int)

Deprecated: Use HttpResponse.ProtoReflect.Descriptor instead.

func (*HttpResponse) GetData

func (x *HttpResponse) GetData() *HttpResponse_Data

func (*HttpResponse) GetHeader

func (x *HttpResponse) GetHeader() *HttpResponse_Header

func (*HttpResponse) GetMessage

func (m *HttpResponse) GetMessage() isHttpResponse_Message

func (*HttpResponse) GetTrailer

func (x *HttpResponse) GetTrailer() *HttpResponse_Trailer

func (*HttpResponse) GetUpgradeData

func (x *HttpResponse) GetUpgradeData() *HttpResponse_UpgradeData

func (*HttpResponse) ProtoMessage

func (*HttpResponse) ProtoMessage()

func (*HttpResponse) ProtoReflect

func (x *HttpResponse) ProtoReflect() protoreflect.Message

func (*HttpResponse) Reset

func (x *HttpResponse) Reset()

func (*HttpResponse) String

func (x *HttpResponse) String() string

type HttpResponse_Data

type HttpResponse_Data struct {
	Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
	// contains filtered or unexported fields
}

func (*HttpResponse_Data) Descriptor deprecated

func (*HttpResponse_Data) Descriptor() ([]byte, []int)

Deprecated: Use HttpResponse_Data.ProtoReflect.Descriptor instead.

func (*HttpResponse_Data) GetData

func (x *HttpResponse_Data) GetData() []byte

func (*HttpResponse_Data) ProtoMessage

func (*HttpResponse_Data) ProtoMessage()

func (*HttpResponse_Data) ProtoReflect

func (x *HttpResponse_Data) ProtoReflect() protoreflect.Message

func (*HttpResponse_Data) Reset

func (x *HttpResponse_Data) Reset()

func (*HttpResponse_Data) String

func (x *HttpResponse_Data) String() string

type HttpResponse_Data_

type HttpResponse_Data_ struct {
	Data *HttpResponse_Data `protobuf:"bytes,2,opt,name=data,proto3,oneof"`
}

type HttpResponse_Header

type HttpResponse_Header struct {
	Response *prototool.HttpResponse `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"`
	// contains filtered or unexported fields
}

func (*HttpResponse_Header) Descriptor deprecated

func (*HttpResponse_Header) Descriptor() ([]byte, []int)

Deprecated: Use HttpResponse_Header.ProtoReflect.Descriptor instead.

func (*HttpResponse_Header) GetResponse

func (x *HttpResponse_Header) GetResponse() *prototool.HttpResponse

func (*HttpResponse_Header) ProtoMessage

func (*HttpResponse_Header) ProtoMessage()

func (*HttpResponse_Header) ProtoReflect

func (x *HttpResponse_Header) ProtoReflect() protoreflect.Message

func (*HttpResponse_Header) Reset

func (x *HttpResponse_Header) Reset()

func (*HttpResponse_Header) String

func (x *HttpResponse_Header) String() string

type HttpResponse_Header_

type HttpResponse_Header_ struct {
	Header *HttpResponse_Header `protobuf:"bytes,1,opt,name=header,proto3,oneof"`
}

type HttpResponse_Trailer

type HttpResponse_Trailer struct {
	// contains filtered or unexported fields
}

func (*HttpResponse_Trailer) Descriptor deprecated

func (*HttpResponse_Trailer) Descriptor() ([]byte, []int)

Deprecated: Use HttpResponse_Trailer.ProtoReflect.Descriptor instead.

func (*HttpResponse_Trailer) ProtoMessage

func (*HttpResponse_Trailer) ProtoMessage()

func (*HttpResponse_Trailer) ProtoReflect

func (x *HttpResponse_Trailer) ProtoReflect() protoreflect.Message

func (*HttpResponse_Trailer) Reset

func (x *HttpResponse_Trailer) Reset()

func (*HttpResponse_Trailer) String

func (x *HttpResponse_Trailer) String() string

type HttpResponse_Trailer_

type HttpResponse_Trailer_ struct {
	Trailer *HttpResponse_Trailer `protobuf:"bytes,3,opt,name=trailer,proto3,oneof"`
}

type HttpResponse_UpgradeData

type HttpResponse_UpgradeData struct {
	Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
	// contains filtered or unexported fields
}

func (*HttpResponse_UpgradeData) Descriptor deprecated

func (*HttpResponse_UpgradeData) Descriptor() ([]byte, []int)

Deprecated: Use HttpResponse_UpgradeData.ProtoReflect.Descriptor instead.

func (*HttpResponse_UpgradeData) GetData

func (x *HttpResponse_UpgradeData) GetData() []byte

func (*HttpResponse_UpgradeData) ProtoMessage

func (*HttpResponse_UpgradeData) ProtoMessage()

func (*HttpResponse_UpgradeData) ProtoReflect

func (x *HttpResponse_UpgradeData) ProtoReflect() protoreflect.Message

func (*HttpResponse_UpgradeData) Reset

func (x *HttpResponse_UpgradeData) Reset()

func (*HttpResponse_UpgradeData) String

func (x *HttpResponse_UpgradeData) String() string

type HttpResponse_UpgradeData_

type HttpResponse_UpgradeData_ struct {
	UpgradeData *HttpResponse_UpgradeData `protobuf:"bytes,4,opt,name=upgradeData,proto3,oneof"`
}

type InboundGRPCToOutboundHTTP

type InboundGRPCToOutboundHTTP struct {
	Log                   *slog.Logger
	HandleProcessingError HandleProcessingErrorFunc
	HandleIOError         HandleIOErrorFunc
	HTTPDo                HTTPDo
}

func (*InboundGRPCToOutboundHTTP) Pipe

type InboundGRPCToOutboundHTTPStream

type InboundGRPCToOutboundHTTPStream = grpc.ServerStreamingServer[HttpResponse]

type InboundHTTPToOutboundGRPC

type InboundHTTPToOutboundGRPC struct {
	Log                   *slog.Logger
	NewClient             func(context.Context) (HTTPRequestClient, error)
	HandleProcessingError HandleProcessingErrorFunc
	WriteErrorResponse    WriteErrorResponse
	MergeHeaders          MergeHeadersFunc
	CheckHeader           CheckHeader
}

func (*InboundHTTPToOutboundGRPC) Pipe

Pipe pipes. headerExtra can be nil.

type InboundStreamToOutboundStream

type InboundStreamToOutboundStream struct {
	PipeInboundToOutbound func() error
	PipeOutboundToInbound func() error
}

func (*InboundStreamToOutboundStream) Pipe

type InvalidTransitionCallback

type InvalidTransitionCallback func(from, to protoreflect.FieldNumber, allowed []protoreflect.FieldNumber, message proto.Message) error

InvalidTransitionCallback is a callback that is called when an invalid transition is attempted. 'message' is nil when 'to' is eofState.

type JWTAuther

type JWTAuther struct {
	// contains filtered or unexported fields
}

func NewEdDSAJWTAuther added in v17.1.0

func NewEdDSAJWTAuther(publicKey ed25519.PublicKey, issuer, audience string, loggerFromContext func(context.Context) *slog.Logger) *JWTAuther

func NewHMACJWTAuther added in v17.1.0

func NewHMACJWTAuther(secret []byte, issuer, audience string, loggerFromContext func(context.Context) *slog.Logger) *JWTAuther

func (*JWTAuther) StreamServerInterceptor

func (a *JWTAuther) StreamServerInterceptor(srv any, stream grpc.ServerStream, info *grpc.StreamServerInfo, handler grpc.StreamHandler) error

StreamServerInterceptor returns a new stream server interceptors that performs per-request JWT auth.

func (*JWTAuther) UnaryServerInterceptor

func (a *JWTAuther) UnaryServerInterceptor(ctx context.Context, req any, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (any, error)

UnaryServerInterceptor returns a new unary server interceptors that performs per-request JWT auth.

type JWTCredentials

type JWTCredentials struct {
	SigningMethod jwt.SigningMethod
	// Type depends on the SigningMethod:
	// - []byte for HMAC.
	// - *ecdsa.PrivateKey for ECDSA.
	// - *rsa.PrivateKey for RSA.
	// - crypto.Signer for EdDSA.
	SigningKey any
	Audience   string
	Issuer     string
	Insecure   bool
}

func (*JWTCredentials) GetRequestMetadata

func (c *JWTCredentials) GetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error)

func (*JWTCredentials) RequireTransportSecurity

func (c *JWTCredentials) RequireTransportSecurity() bool

type Logger added in v17.2.0

type Logger struct {
	Handler slog.Handler
}

Logger implements gRPC logging interface on top of slog.Handler. We don't have an official adapter, unfortunately: https://github.com/grpc/grpc-go/issues/6590.

func (*Logger) Error added in v17.2.0

func (l *Logger) Error(args ...any)

func (*Logger) ErrorDepth added in v17.2.0

func (l *Logger) ErrorDepth(depth int, args ...any)

func (*Logger) Errorf added in v17.2.0

func (l *Logger) Errorf(format string, args ...any)

func (*Logger) Errorln added in v17.2.0

func (l *Logger) Errorln(args ...any)

func (*Logger) Fatal added in v17.2.0

func (l *Logger) Fatal(args ...any)

func (*Logger) FatalDepth added in v17.2.0

func (l *Logger) FatalDepth(depth int, args ...any)

func (*Logger) Fatalf added in v17.2.0

func (l *Logger) Fatalf(format string, args ...any)

func (*Logger) Fatalln added in v17.2.0

func (l *Logger) Fatalln(args ...any)

func (*Logger) Info added in v17.2.0

func (l *Logger) Info(args ...any)

func (*Logger) InfoDepth added in v17.2.0

func (l *Logger) InfoDepth(depth int, args ...any)

func (*Logger) Infof added in v17.2.0

func (l *Logger) Infof(format string, args ...any)

func (*Logger) Infoln added in v17.2.0

func (l *Logger) Infoln(args ...any)

func (*Logger) V added in v17.2.0

func (l *Logger) V(lvl int) bool

func (*Logger) Warning added in v17.2.0

func (l *Logger) Warning(args ...any)

func (*Logger) WarningDepth added in v17.2.0

func (l *Logger) WarningDepth(depth int, args ...any)

func (*Logger) Warningf added in v17.2.0

func (l *Logger) Warningf(format string, args ...any)

func (*Logger) Warningln added in v17.2.0

func (l *Logger) Warningln(args ...any)

type MergeHeadersFunc

type MergeHeadersFunc func(outboundResponse, inboundResponse http.Header)

type MessageCallback

type MessageCallback any

MessageCallback is a function with signature func(message someConcreteProtoMessage) error someConcreteProtoMessage must be the type passed to NewStreamVisitor().

type Pool

type Pool struct {
	// contains filtered or unexported fields
}

func NewPool

func NewPool(log *slog.Logger, errRep errz.ErrReporter, tlsCreds credentials.TransportCredentials, dialOpts ...grpc.DialOption) *Pool

func (*Pool) Dial

func (p *Pool) Dial(ctx context.Context, targetURL string) (PoolConn, error)

func (*Pool) Shutdown added in v17.5.0

func (p *Pool) Shutdown(deadline time.Duration)

type PoolConn

type PoolConn interface {
	grpc.ClientConnInterface
	Done()
}

type PoolInterface

type PoolInterface interface {
	Dial(ctx context.Context, targetURL string) (PoolConn, error)
	Shutdown(deadline time.Duration)
}

type PoolSelf

type PoolSelf struct {
	// contains filtered or unexported fields
}

PoolSelf is a decorator that uses an in-memory connection to dial self rather than going over network.

func NewPoolSelf

func NewPoolSelf(log *slog.Logger, errRep errz.ErrReporter, delegate PoolInterface, selfURL string, selfConn *grpc.ClientConn) *PoolSelf

func (*PoolSelf) Dial

func (p *PoolSelf) Dial(ctx context.Context, targetURL string) (PoolConn, error)

func (*PoolSelf) Shutdown added in v17.5.0

func (p *PoolSelf) Shutdown(deadline time.Duration)

type RawCodec

type RawCodec struct {
}

RawCodec is a *raw* encoding.Codec. This codec treats a gRPC message frame as raw bytes.

func (RawCodec) Marshal

func (c RawCodec) Marshal(v any) (mem.BufferSlice, error)

func (RawCodec) Name

func (c RawCodec) Name() string

func (RawCodec) Unmarshal

func (c RawCodec) Unmarshal(data mem.BufferSlice, v any) error

type RawCodecWithProtoFallback

type RawCodecWithProtoFallback struct {
}

RawCodecWithProtoFallback is a *raw* encoding.Codec. This codec treats a gRPC message as raw bytes if it's RawFrame and falls back to default proto encoding for other message types.

func (RawCodecWithProtoFallback) Marshal

func (RawCodecWithProtoFallback) Name

func (RawCodecWithProtoFallback) Unmarshal

func (c RawCodecWithProtoFallback) Unmarshal(data mem.BufferSlice, v any) error

type RawFrame

type RawFrame struct {
	Data mem.BufferSlice
}

type RequestsInFlightStatsHandler

type RequestsInFlightStatsHandler struct {
	// contains filtered or unexported fields
}

func NewClientRequestsInFlightStatsHandler

func NewClientRequestsInFlightStatsHandler(m otelmetric.Meter) (*RequestsInFlightStatsHandler, error)

func NewRequestsInFlightStatsHandler

func NewRequestsInFlightStatsHandler(sub string, m otelmetric.Meter) (*RequestsInFlightStatsHandler, error)

func NewServerRequestsInFlightStatsHandler

func NewServerRequestsInFlightStatsHandler(m otelmetric.Meter) (*RequestsInFlightStatsHandler, error)

func (*RequestsInFlightStatsHandler) HandleConn

func (*RequestsInFlightStatsHandler) HandleRPC

func (h *RequestsInFlightStatsHandler) HandleRPC(ctx context.Context, stat stats.RPCStats)

func (*RequestsInFlightStatsHandler) TagConn

func (*RequestsInFlightStatsHandler) TagRPC

type ServerErrorReporter

type ServerErrorReporter interface {
	Report(ctx context.Context, fullMethod string, err error)
}

type ServerLimiter

type ServerLimiter interface {
	// Allow should return true and consume one "limitable event" if the limit has not been exceeded. Otherwise, it returns false and does not count towards the limit
	Allow(ctx context.Context) bool
}

ServerLimiter defines the interface to perform server-side request rate limiting. Inspired by golang.org/x/time/rate.Limiter, but accepts a context

type ServerNoopMaxConnAgeStatsHandler

type ServerNoopMaxConnAgeStatsHandler struct {
}

func (ServerNoopMaxConnAgeStatsHandler) HandleConn

func (m ServerNoopMaxConnAgeStatsHandler) HandleConn(ctx context.Context, connStats stats.ConnStats)

func (ServerNoopMaxConnAgeStatsHandler) HandleRPC

func (m ServerNoopMaxConnAgeStatsHandler) HandleRPC(ctx context.Context, rpcStats stats.RPCStats)

func (ServerNoopMaxConnAgeStatsHandler) TagConn

func (ServerNoopMaxConnAgeStatsHandler) TagRPC

type Stream

type Stream interface {
	RecvMsg(m any) error
}

Stream is a grpc.ServerStream or grpc.ClientStream.

type StreamVisitor

type StreamVisitor struct {
	// contains filtered or unexported fields
}

StreamVisitor allows to consume messages in a gRPC stream. Message order should follow the automata, defined on fields in a oneof group.

func NewStreamVisitor

func NewStreamVisitor(streamMessage proto.Message) (*StreamVisitor, error)

func (*StreamVisitor) Visit

func (s *StreamVisitor) Visit(stream Stream, opts ...StreamVisitorOption) error

type StreamVisitorOption

type StreamVisitorOption func(*svConfig) error

StreamVisitorOption is an option for the visitor. Must return nil or an error, compatible with the gRPC status package.

func WithCallback

func WithCallback(transitionTo protoreflect.FieldNumber, cb MessageCallback) StreamVisitorOption

WithCallback registers cb to be called when entering transitionTo when parsing the stream. Only one callback can be registered per target

func WithEOFCallback

func WithEOFCallback(cb EOFCallback) StreamVisitorOption

WithEOFCallback sets a callback for end of stream.

func WithNotExpectingToGet

func WithNotExpectingToGet(code codes.Code, transitionTo ...protoreflect.FieldNumber) StreamVisitorOption

WithNotExpectingToGet is used to list fields that the caller is not expecting to get during this Visit() invocation.

func WithStartState

func WithStartState(startState protoreflect.FieldNumber) StreamVisitorOption

WithStartState allows to specify a custom automata start state. The visitor then acts as if it has just visited field with startState number.

type WriteErrorResponse

type WriteErrorResponse func(w http.ResponseWriter, r *http.Request, eResp *ErrResp)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL