flush_v3 #188

Merged
vtolstov merged 6 commits from kgorbunov/micro-server-http:flush_v3 into v3 2024-03-26 14:52:34 +03:00
Showing only changes of commit 4ec60dbb5b - Show all commits

View File

@ -41,9 +41,10 @@ type Handler struct {
type Option func(*Options) type Option func(*Options)
type Options struct { type Options struct {
Meter meter.Meter Meter meter.Meter
Name string Name string
MeterOptions []meter.Option MeterOptions []meter.Option
DisableCompress bool
} }
func Meter(m meter.Meter) Option { func Meter(m meter.Meter) Option {
@ -58,6 +59,12 @@ func Name(name string) Option {
} }
} }
func DisableCompress(g bool) Option {
return func(o *Options) {
o.DisableCompress = g
}
}
func MeterOptions(opts ...meter.Option) Option { func MeterOptions(opts ...meter.Option) Option {
return func(o *Options) { return func(o *Options) {
o.MeterOptions = append(o.MeterOptions, opts...) o.MeterOptions = append(o.MeterOptions, opts...)
@ -65,7 +72,7 @@ func MeterOptions(opts ...meter.Option) Option {
} }
func NewOptions(opts ...Option) Options { func NewOptions(opts ...Option) Options {
options := Options{Meter: meter.DefaultMeter} options := Options{Meter: meter.DefaultMeter, DisableCompress: false}
for _, o := range opts { for _, o := range opts {
o(&options) o(&options)
} }
@ -89,8 +96,9 @@ func (h *Handler) Metrics(ctx context.Context, req *codecpb.Frame, rsp *codecpb.
w := io.Writer(buf) w := io.Writer(buf)
if md, ok := metadata.FromOutgoingContext(ctx); gzipAccepted(md) && ok { if md, ok := metadata.FromOutgoingContext(ctx); gzipAccepted(md) && ok && !h.opts.DisableCompress {
md.Set(contentEncodingHeader, "gzip")) omd, _ := metadata.FromOutgoingContext(ctx)
omd.Set(contentEncodingHeader, "gzip")
gz := gzipPool.Get().(*gzip.Writer) gz := gzipPool.Get().(*gzip.Writer)
defer gzipPool.Put(gz) defer gzipPool.Put(gz)