Module: Jade::Interop::Runtime

Included in:
Runtime
Defined in:
lib/jade/interop/runtime.rb

Instance Method Summary collapse

Instance Method Details

#task_call(interop_module_name, function_name, ok_decoder, err_decoder) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/jade/interop/runtime.rb', line 6

def task_call(interop_module_name, function_name, ok_decoder, err_decoder)
  ->(*args) do
    interop_module_name
      .send(function_name)
      .then do |port|
        port.is_a?(Jade::TaskDef) ||
          fail(Interop::PortNotRegistered.new(interop_module_name, function_name))

        Jade::Task::Decoded.new(
          Jade::Task::Dispatch.new(port, args),
          ok_decoder,
          err_decoder,
        )
      end
  end
end