Class: Modal::ControlPlaneInvocation

Inherits:
Object
  • Object
show all
Includes:
Invocation
Defined in:
lib/modal/invocation.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(function_call_id, input = nil, function_call_jwt = nil, input_jwt = nil) ⇒ ControlPlaneInvocation

Returns a new instance of ControlPlaneInvocation.



17
18
19
20
21
22
# File 'lib/modal/invocation.rb', line 17

def initialize(function_call_id, input = nil, function_call_jwt = nil, input_jwt = nil)
  @function_call_id = function_call_id
  @input = input
  @function_call_jwt = function_call_jwt
  @input_jwt = input_jwt
end

Instance Attribute Details

#function_call_idObject (readonly)

Returns the value of attribute function_call_id.



15
16
17
# File 'lib/modal/invocation.rb', line 15

def function_call_id
  @function_call_id
end

Class Method Details

.create(function_id, input, invocation_type) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/modal/invocation.rb', line 24

def self.create(function_id, input, invocation_type)
  function_put_inputs_item = Modal::Client::FunctionPutInputsItem.new(idx: 0, input: input)
  request = Modal::Client::FunctionMapRequest.new(
    function_id: function_id,
    function_call_type: Modal::Client::FunctionCallType::FUNCTION_CALL_TYPE_UNARY,
    function_call_invocation_type: invocation_type,
    pipelined_inputs: [function_put_inputs_item]
  )
  function_map_response = Modal.client.call(:function_map, request)

  new(
    function_map_response.function_call_id,
    input,
    function_map_response.function_call_jwt,
    function_map_response.pipelined_inputs[0].input_jwt
  )
end

.from_function_call_id(function_call_id) ⇒ Object



42
43
44
# File 'lib/modal/invocation.rb', line 42

def self.from_function_call_id(function_call_id)
  new(function_call_id)
end

Instance Method Details

#await_output(timeout = nil) ⇒ Object



46
47
48
# File 'lib/modal/invocation.rb', line 46

def await_output(timeout = nil)
  poll_function_output(@function_call_id, timeout)
end

#retry(retry_count) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/modal/invocation.rb', line 50

def retry(retry_count)
  unless @input
    raise "Cannot retry function invocation - input missing"
  end

  retry_item = Modal::Client::FunctionRetryInputsItem.new(
    input_jwt: @input_jwt,
    input: @input,
    retry_count: retry_count
  )
  request = Modal::Client::FunctionRetryInputsRequest.new(
    function_call_jwt: @function_call_jwt,
    inputs: [retry_item]
  )
  function_retry_response = Modal.client.call(:function_retry_inputs, request)
  @input_jwt = function_retry_response.input_jwts[0]
end