class Protein::Processor
Public Class Methods
call(router, request_payload)
click to toggle source
# File lib/protein/processor.rb, line 4 def call(router, request_payload) service_name, request_buf = Payload::Request.decode(request_payload) service_class = router.resolve_by_name(service_name) if service_class.response? process_and_log_call(service_name, service_class, request_buf) else process_and_log_push(service_name, service_class, request_buf) end end
Private Class Methods
process_and_log_call(service_name, service_class, request_buf)
click to toggle source
# File lib/protein/processor.rb, line 17 def process_and_log_call(service_name, service_class, request_buf) Protein.logger.info "Processing RPC call: #{service_name}" start_time = Time.now response_buf, errors = process_call(service_class, request_buf) duration_ms = ((Time.now - start_time) * 1000).round Protein.logger.info "#{response_buf ? 'Resolved' : 'Rejected'} in #{duration_ms}ms" Payload::Response.encode(response_buf, errors) if service_class.response? end
process_and_log_push(service_name, service_class, request_buf)
click to toggle source
# File lib/protein/processor.rb, line 46 def process_and_log_push(service_name, service_class, request_buf) Protein.logger.info "Processing RPC push: #{service_name}" start_time = Time.now process_push(service_class, request_buf) duration_ms = ((Time.now - start_time) * 1000).round Protein.logger.info "Processed in #{duration_ms}ms" nil end
process_call(service_class, request_buf)
click to toggle source
# File lib/protein/processor.rb, line 29 def process_call(service_class, request_buf) request_class = service_class.request_class request = request_class.decode(request_buf) service_instance = service_class.new(request) service_instance.process if service_instance.success? response_class = service_class.response_class response_buf = response_class.encode(service_instance.response) [response_buf, nil] else [nil, service_instance.errors] end end
process_push(service_class, request_buf)
click to toggle source
# File lib/protein/processor.rb, line 58 def process_push(service_class, request_buf) request_class = service_class.request_class request = request_class.decode(request_buf) service_instance = service_class.new(request) service_instance.process end