| 49 | } |
| 50 | |
| 51 | func (s *Server) Run(addr string) { |
| 52 | listener, err := net.Listen("tcp", ":0") |
| 53 | if err != nil { |
| 54 | s.logger.Fatalf("failed to start grpc server listener: %v", err) |
| 55 | return |
| 56 | } |
| 57 | |
| 58 | port := listener.Addr().(*net.TCPAddr).Port |
| 59 | go func() { |
| 60 | if err := s.grpcServer.Serve(listener); err != nil { |
| 61 | s.logger.Fatalf("failed to start grpc server: %v", err) |
| 62 | } |
| 63 | }() |
| 64 | |
| 65 | opts := []grpc.DialOption{grpc.WithTransportCredentials(insecure.NewCredentials())} |
| 66 | client, err := grpc.NewClient(fmt.Sprintf(":%d", port), opts...) |
| 67 | if err != nil { |
| 68 | s.logger.Fatalf("failed to start grpc client: %v", err) |
| 69 | return |
| 70 | } |
| 71 | |
| 72 | mux := runtime.NewServeMux( |
| 73 | runtime.WithMetadata(s.metadataAnnotator()), |
| 74 | runtime.WithForwardResponseOption(s.forwardResponseOption()), |
| 75 | runtime.WithErrorHandler(s.errorHandler()), |
| 76 | ) |
| 77 | |
| 78 | err = authv1.RegisterAuthServiceHandler(context.Background(), mux, client) |
| 79 | if err != nil { |
| 80 | s.logger.Fatalf("failed to register auth service grpc gateway: %v", err) |
| 81 | return |
| 82 | } |
| 83 | err = chatv1.RegisterChatServiceHandler(context.Background(), mux, client) |
| 84 | if err != nil { |
| 85 | s.logger.Fatalf("failed to register chat service grpc gateway: %v", err) |
| 86 | return |
| 87 | } |
| 88 | err = chatv2.RegisterChatServiceHandler(context.Background(), mux, client) |
| 89 | if err != nil { |
| 90 | s.logger.Fatalf("failed to register chat v2 service grpc gateway: %v", err) |
| 91 | return |
| 92 | } |
| 93 | err = userv1.RegisterUserServiceHandler(context.Background(), mux, client) |
| 94 | if err != nil { |
| 95 | s.logger.Fatalf("failed to register user service grpc gateway: %v", err) |
| 96 | return |
| 97 | } |
| 98 | err = projectv1.RegisterProjectServiceHandler(context.Background(), mux, client) |
| 99 | if err != nil { |
| 100 | s.logger.Fatalf("failed to register project service grpc gateway: %v", err) |
| 101 | return |
| 102 | } |
| 103 | err = commentv1.RegisterCommentServiceHandler(context.Background(), mux, client) |
| 104 | if err != nil { |
| 105 | s.logger.Fatalf("failed to register comment service grpc gateway: %v", err) |
| 106 | return |
| 107 | } |
| 108 | |