5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
# File 'lib/generators/protod/gruf_generator.rb', line 5
def create_gruf_controller
create_file "app/rpc/protod/handler_controller.rb", " # frozen_string_literal: true\n\n class Protod\n class HandlerController < ::Gruf::Controllers::Base\n include ::Gruf::Loggable\n\n def self.package\n @package ||= Protod::Rpc::Handler.find_package\n end\n\n bind Protod::Rpc::Handler.find_service_in(package).pb_const\n\n def handle\n return enum_for(:handle) unless block_given?\n\n logger.info(\"protod/handle start\")\n handler = Protod::Rpc::Handler.new(self.class.package)\n\n request.messages.each do |m|\n logger.debug(\"protod/handle receive : #\\{m\\}\")\n yield handler.handle(m).tap { logger.debug(\"protod/handle send : #\\{_1\\}\") }\n end\n logger.info(\"protod/handle finished\")\n rescue Protod::Rpc::Handler::InvalidArgument => e\n logger.debug(\"protod/handle failed : #\\{e.message\\}\")\n fail!(:invalid_argument, :invalid_argument, \"ERROR: #\\{e.message\\}\")\n rescue Exception => e\n logger.error(\"protod/handle failed : #\\{e.message\\}\\\\n#\\{e.backtrace.join(\"\\\\n\")\\}\")\n set_debug_info(e.message, e.backtrace[0..4])\n fail!(:internal, :internal, \"ERROR: #\\{e.message\\}\")\n end\n end\n end\n RUBY\nend\n"
|