class Temporalio::Client::Connection::Service

Base class for raw gRPC services.

def initialize(connection, service)

@!visibility private
def initialize(connection, service)
  @connection = connection
  @service = service
end

def invoke_rpc(rpc:, request_class:, response_class:, request:, rpc_options:)

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