mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-04-28 06:49:49 -05:00
e2d7251893
This moves the ratelimit ('THUMBNAILS_MAX_CONCURRENT_REQUESTS') from the
HTTP endpoint to the GRPC endpoint. The HTTP endpoint is just used for
downloading already created thumbnails. But the resource consuming part of
thumbnail generation happens in the GRPC service.
101 lines
2.2 KiB
Go
101 lines
2.2 KiB
Go
package grpc
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/owncloud/ocis/v2/ocis-pkg/log"
|
|
"github.com/owncloud/ocis/v2/services/thumbnails/pkg/config"
|
|
"github.com/owncloud/ocis/v2/services/thumbnails/pkg/metrics"
|
|
"go.opentelemetry.io/otel/trace"
|
|
)
|
|
|
|
// Option defines a single option function.
|
|
type Option func(o *Options)
|
|
|
|
// Options defines the available options for this package.
|
|
type Options struct {
|
|
Name string
|
|
Address string
|
|
Logger log.Logger
|
|
Context context.Context
|
|
Config *config.Config
|
|
Metrics *metrics.Metrics
|
|
Namespace string
|
|
TraceProvider trace.TracerProvider
|
|
MaxConcurrentRequests int
|
|
}
|
|
|
|
// newOptions initializes the available default options.
|
|
func newOptions(opts ...Option) Options {
|
|
opt := Options{}
|
|
|
|
for _, o := range opts {
|
|
o(&opt)
|
|
}
|
|
|
|
return opt
|
|
}
|
|
|
|
// Logger provides a function to set the logger option.
|
|
func Logger(val log.Logger) Option {
|
|
return func(o *Options) {
|
|
o.Logger = val
|
|
}
|
|
}
|
|
|
|
// Name provides a name for the service.
|
|
func Name(val string) Option {
|
|
return func(o *Options) {
|
|
o.Name = val
|
|
}
|
|
}
|
|
|
|
// Address provides an address for the service.
|
|
func Address(val string) Option {
|
|
return func(o *Options) {
|
|
o.Address = val
|
|
}
|
|
}
|
|
|
|
// Context provides a function to set the context option.
|
|
func Context(val context.Context) Option {
|
|
return func(o *Options) {
|
|
o.Context = val
|
|
}
|
|
}
|
|
|
|
// Config provides a function to set the config option.
|
|
func Config(val *config.Config) Option {
|
|
return func(o *Options) {
|
|
o.Config = val
|
|
}
|
|
}
|
|
|
|
// Metrics provides a function to set the metrics option.
|
|
func Metrics(val *metrics.Metrics) Option {
|
|
return func(o *Options) {
|
|
o.Metrics = val
|
|
}
|
|
}
|
|
|
|
// Namespace provides a function to set the namespace option.
|
|
func Namespace(val string) Option {
|
|
return func(o *Options) {
|
|
o.Namespace = val
|
|
}
|
|
}
|
|
|
|
// TraceProvider provides a function to set the TraceProvider option
|
|
func TraceProvider(val trace.TracerProvider) Option {
|
|
return func(o *Options) {
|
|
o.TraceProvider = val
|
|
}
|
|
}
|
|
|
|
// MaxConcurrentRequests provides a function to set the MaxConcurrentRequests option.
|
|
func MaxConcurrentRequests(val int) Option {
|
|
return func(o *Options) {
|
|
o.MaxConcurrentRequests = val
|
|
}
|
|
}
|