Class: Arf::RPC::MethodMeta
- Inherits:
-
Object
- Object
- Arf::RPC::MethodMeta
- 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
- #coerce_result(value, resolver) ⇒ Object
-
#initialize(inputs, outputs) ⇒ MethodMeta
constructor
A new instance of MethodMeta.
- #input_stream ⇒ Object
- #input_stream? ⇒ Boolean
- #inputs? ⇒ Boolean
- #output? ⇒ Boolean
- #output_stream ⇒ Object
- #output_stream? ⇒ Boolean
- #output_types ⇒ Object
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_stream ⇒ Object
18 |
# File 'lib/arf/rpc/method_meta.rb', line 18 def input_stream = @inputs.values.find(&ANY_STREAMER) |
#input_stream? ⇒ Boolean
20 |
# File 'lib/arf/rpc/method_meta.rb', line 20 def input_stream? = !input_stream.nil? |
#inputs? ⇒ Boolean
22 |
# File 'lib/arf/rpc/method_meta.rb', line 22 def inputs? = @inputs.values.any?(&NOT_STREAMER) |
#output? ⇒ Boolean
21 |
# File 'lib/arf/rpc/method_meta.rb', line 21 def output? = @outputs.any?(&NOT_STREAMER) |
#output_stream ⇒ Object
17 |
# File 'lib/arf/rpc/method_meta.rb', line 17 def output_stream = @outputs.find(&ANY_STREAMER) |
#output_stream? ⇒ Boolean
19 |
# File 'lib/arf/rpc/method_meta.rb', line 19 def output_stream? = !output_stream.nil? |
#output_types ⇒ Object
23 |
# File 'lib/arf/rpc/method_meta.rb', line 23 def output_types = @outputs.filter(&NOT_STREAMER) |