Files
QSfera/ocis-pkg/service/grpc/service.go
T
2020-09-18 14:51:07 +02:00

54 lines
1.1 KiB
Go

package grpc
import (
"strings"
"time"
"github.com/micro/go-micro/v2"
"github.com/micro/go-plugins/wrapper/trace/opencensus/v2"
"github.com/owncloud/ocis/ocis-pkg/wrapper/prometheus"
)
// Service simply wraps the go-micro grpc service.
type Service struct {
micro.Service
}
// NewService initializes a new grpc service.
func NewService(opts ...Option) Service {
sopts := newOptions(opts...)
sopts.Logger.Info().
Str("transport", "grpc").
Str("addr", sopts.Address).
Msg("Starting server")
mopts := []micro.Option{
micro.Name(
strings.Join(
[]string{
sopts.Namespace,
sopts.Name,
},
".",
),
),
micro.Version(sopts.Version),
micro.Address(sopts.Address),
micro.WrapHandler(prometheus.NewHandlerWrapper()),
micro.WrapClient(opencensus.NewClientWrapper()),
micro.WrapHandler(opencensus.NewHandlerWrapper()),
micro.WrapSubscriber(opencensus.NewSubscriberWrapper()),
micro.RegisterTTL(time.Second * 30),
micro.RegisterInterval(time.Second * 10),
micro.Context(sopts.Context),
micro.Flags(sopts.Flags...),
}
return Service{
micro.NewService(
mopts...,
),
}
}