mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-02-05 11:51:41 -05:00
Share the same instance between the HTTP and the GRPC service. This is in preparation for moving the cache of the metadata storage backend to a go-micro/store based implementation. By sharing the same service instance in the HTTP and GRPC services we can avoid the usage of global variables for the caches, which will make the move to the go-micro/store implementation simpler.
86 lines
1.8 KiB
Go
86 lines
1.8 KiB
Go
package http
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/owncloud/ocis/v2/ocis-pkg/log"
|
|
"github.com/owncloud/ocis/v2/services/settings/pkg/config"
|
|
"github.com/owncloud/ocis/v2/services/settings/pkg/metrics"
|
|
svc "github.com/owncloud/ocis/v2/services/settings/pkg/service/v0"
|
|
"github.com/urfave/cli/v2"
|
|
)
|
|
|
|
// Option defines a single option function.
|
|
type Option func(o *Options)
|
|
|
|
// Options defines the available options for this package.
|
|
type Options struct {
|
|
Name string
|
|
Logger log.Logger
|
|
Context context.Context
|
|
Config *config.Config
|
|
Metrics *metrics.Metrics
|
|
ServiceHandler svc.Service
|
|
Flags []cli.Flag
|
|
}
|
|
|
|
// 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
|
|
}
|
|
}
|
|
|
|
// 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
|
|
}
|
|
}
|
|
|
|
// Flags provides a function to set the flags option.
|
|
func Flags(val []cli.Flag) Option {
|
|
return func(o *Options) {
|
|
o.Flags = append(o.Flags, val...)
|
|
}
|
|
}
|
|
|
|
// ServiceHandler provides a function to set the ServiceHandler option
|
|
func ServiceHandler(val svc.Service) Option {
|
|
return func(o *Options) {
|
|
o.ServiceHandler = val
|
|
}
|
|
}
|