Class: Arf::RPC::MethodMeta

Inherits:
Object
  • Object
show all
Defined in:
lib/arf/rpc/method_meta.rb

Constant Summary collapse

Streamer =
Arf::Types::Streamer
InOutStream =
Arf::Types::InOutStream
ANY_STREAMER =
->(v) { v.is_a?(Streamer) || v.is_a?(InOutStream) }
NOT_STREAMER =
->(v) { !v.is_a?(Streamer) && !v.is_a?(InOutStream) }

Instance Method Summary collapse

Constructor Details

#initialize(inputs, outputs) ⇒ MethodMeta

Returns a new instance of MethodMeta.



12
13
14
15
# File 'lib/arf/rpc/method_meta.rb', line 12

def initialize(inputs, outputs)
  @inputs = inputs || {}
  @outputs = outputs || []
end

Instance Method Details

#coerce_result(value, resolver) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/arf/rpc/method_meta.rb', line 25

def coerce_result(value, resolver)
  return [] if value.nil?

  [value].flatten.map.with_index do |v, idx|
    expected_type = output_types[idx]
    case expected_type
    when String
      Arf::Types.coerce_value(v, resolver.find_type(expected_type))
    when Arf::Types::BaseType
      expected_type.coerce(v)
    else
      Arf::Types.coerce_value(v, expected_type)
    end
  end
end

#input_streamObject



18
# File 'lib/arf/rpc/method_meta.rb', line 18

def input_stream = @inputs.values.find(&ANY_STREAMER)

#input_stream?Boolean

Returns:

  • (Boolean)


20
# File 'lib/arf/rpc/method_meta.rb', line 20

def input_stream? = !input_stream.nil?

#inputs?Boolean

Returns:

  • (Boolean)


22
# File 'lib/arf/rpc/method_meta.rb', line 22

def inputs? = @inputs.values.any?(&NOT_STREAMER)

#output?Boolean

Returns:

  • (Boolean)


21
# File 'lib/arf/rpc/method_meta.rb', line 21

def output? = @outputs.any?(&NOT_STREAMER)

#output_streamObject



17
# File 'lib/arf/rpc/method_meta.rb', line 17

def output_stream = @outputs.find(&ANY_STREAMER)

#output_stream?Boolean

Returns:

  • (Boolean)


19
# File 'lib/arf/rpc/method_meta.rb', line 19

def output_stream? = !output_stream.nil?

#output_typesObject



23
# File 'lib/arf/rpc/method_meta.rb', line 23

def output_types = @outputs.filter(&NOT_STREAMER)