kubelatte-ce

Форк
2
Форк от sbertech/kubelatte-ce
64 строки · 1.9 Кб
1
package grpc
2

3
import (
4
	"context"
5
	"fmt"
6
	"gitverse.ru/synapse/kubelatte/pkg/observability/logger"
7
	"gitverse.ru/synapse/kubelatte/pkg/sideeffect"
8
	"gitverse.ru/synapse/kubelatte/pkg/sideeffect/grpc/proto"
9
	"google.golang.org/grpc"
10
	"net"
11
)
12

13
type ServerI interface {
14
	DoSideEffect(ctx context.Context, info *proto.SideEffectInfo) (*proto.EmptyMes, error)
15
}
16

17
type ExecutorServer struct {
18
	base.ExecutorI
19
	proto.UnimplementedExecutorServer
20
}
21

22
func (s *ExecutorServer) DoSideEffect(ctx context.Context, info *proto.SideEffectInfo) (*proto.EmptyMes, error) {
23
	s.ExecutorI.ApplySideEffect(ctx, &base.SE{
24
		Configs: base.Configs{
25
			Kind:       info.GetConfigs().GetKind(),
26
			ApiVersion: info.GetConfigs().GetApiVersion(),
27
			ParentTag:  info.GetConfigs().GetParentTag(),
28
			TriggerRef: base.TriggerRef{
29
				SideEffectConfig: info.GetConfigs().GetTriggerRef().GetSideEffectConfig(),
30
				Name:             info.GetConfigs().GetTriggerRef().GetName(),
31
				Namespace:        info.GetConfigs().GetTriggerRef().GetNamespace(),
32
			},
33
			Metadata: base.Metadata{
34
				Namespace: info.GetConfigs().GetMetadata().GetNamespace(),
35
				Name:      info.GetConfigs().GetMetadata().GetName(),
36
			},
37
			TemplateRefs: info.GetConfigs().GetTemplateRefs(),
38
		},
39
		SeMode: info.GetSeMode(),
40
	})
41
	return &proto.EmptyMes{}, nil
42
}
43

44
func StartExecuteServer(port int, executor base.ExecutorI) (servShutDown func()) {
45
	log := logger.FromContext(context.Background())
46
	log.Debugf("[ExecuteServer] Start grpc server on addr :%d", port)
47
	lis, err := net.Listen("tcp", fmt.Sprintf("localhost:%d", port))
48
	if err != nil {
49
		log.Errorf("[ExecuteServer] failed to listen: %s", err.Error())
50
	}
51

52
	var opts []grpc.ServerOption
53
	grpcServer := grpc.NewServer(opts...)
54

55
	go func() {
56
		proto.RegisterExecutorServer(grpcServer, &ExecutorServer{ExecutorI: executor})
57
		err = grpcServer.Serve(lis)
58
		if err != nil {
59
			return
60
		}
61
	}()
62

63
	return grpcServer.GracefulStop
64
}
65

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.