Class: RailwayIpc::Responder

Inherits:
Object
  • Object
show all
Defined in:
lib/railway_ipc/responder.rb

Defined Under Namespace

Classes: ResponseTypeError

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Class Attribute Details

.blockObject (readonly)

Returns the value of attribute block.



10
11
12
# File 'lib/railway_ipc/responder.rb', line 10

def block
  @block
end

Class Method Details

.respond(&block) ⇒ Object



5
6
7
# File 'lib/railway_ipc/responder.rb', line 5

def self.respond(&block)
  @block = block
end

Instance Method Details

#respond(request) ⇒ Object

Raises:



13
14
15
16
17
18
19
20
21
22
23
# File 'lib/railway_ipc/responder.rb', line 13

def respond(request)
  RailwayIpc.logger.info(
    'Responding to request',
    protobuf: { type: request.class, data: request },
    feature: 'railway_ipc_request'
  )
  response = self.class.block.call(request)
  raise ResponseTypeError.new(response.class) unless response.is_a?(Google::Protobuf::MessageExts)

  response
end