Method: Emit::Alternation#execute

Defined in:
lib/emit/alternation.rb

#executeObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/emit/alternation.rb', line 14

def execute
  idx, request, channel, operation = choose

  if @guards[idx]
    action = @guards[idx].action
    fail "Failed executing action in alternation." unless [Proc, Method].include?(action.class)

    case operation
    when :write then action.()
    when :read  then action.(request.message)
    end
  end

  [channel, request.message]
end