Files
opencloud/services/collaboration/pkg/server/grpc/server.go
Jörn Friedrich Dreyer b07b5a1149 use plain pkg module
Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
2025-01-13 16:42:19 +01:00

44 lines
1.2 KiB
Go

package grpc
import (
appproviderv1beta1 "github.com/cs3org/go-cs3apis/cs3/app/provider/v1beta1"
"github.com/opencloud-eu/opencloud/pkg/tracing"
svc "github.com/opencloud-eu/opencloud/services/collaboration/pkg/service/grpc/v0"
"go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc"
"google.golang.org/grpc"
)
// Server initializes a new grpc service ready to run
// THIS SERVICE IS REGISTERED AGAINST REVA, NOT GO-MICRO
func Server(opts ...Option) (*grpc.Server, func(), error) {
options := newOptions(opts...)
grpcOpts := []grpc.ServerOption{
grpc.StatsHandler(
otelgrpc.NewServerHandler(
otelgrpc.WithTracerProvider(options.TraceProvider),
otelgrpc.WithPropagators(tracing.GetPropagator()),
),
),
}
grpcServer := grpc.NewServer(grpcOpts...)
handle, teardown, err := svc.NewHandler(
svc.Config(options.Config),
svc.Logger(options.Logger),
svc.AppURLs(options.AppURLs),
svc.Store(options.Store),
)
if err != nil {
options.Logger.Error().
Err(err).
Msg("Error initializing collaboration service")
return grpcServer, teardown, err
}
// register the app provider interface / OpenInApp call
appproviderv1beta1.RegisterProviderAPIServer(grpcServer, handle)
return grpcServer, teardown, nil
}