Class: Temporalio::Client::Connection::Service

Inherits:
Object
  • Object
show all
Defined in:
lib/temporalio/client/connection/service.rb

Overview

Base class for raw gRPC services.

Instance Method Summary collapse

Instance Method Details

#invoke_rpc(rpc:, request_class:, response_class:, request:, rpc_options:) ⇒ Object (protected)



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/temporalio/client/connection/service.rb', line 20

def invoke_rpc(rpc:, request_class:, response_class:, request:, rpc_options:)
  raise 'Invalid request type' unless request.is_a?(request_class)

  begin
    @connection._core_client._invoke_rpc(
      service: @service,
      rpc:,
      request:,
      response_class:,
      rpc_options:
    )
  rescue Internal::Bridge::Client::RPCFailure => e
    if e.code == Error::RPCError::Code::CANCELED && e.message == '<__user_canceled__>'
      raise Error::CanceledError, 'User canceled'
    end

    raise Error::RPCError.new(e.message, code: e.code, raw_grpc_status: e.details)
  end
end