Class: Gapic::ServiceStub::RpcCall
- Inherits:
-
Object
- Object
- Gapic::ServiceStub::RpcCall
- Defined in:
- lib/gapic/grpc/service_stub/rpc_call.rb
Instance Attribute Summary collapse
-
#stub_method ⇒ Object
readonly
Returns the value of attribute stub_method.
Instance Method Summary collapse
-
#call(request, options: nil) {|response, operation| ... } ⇒ Object
Invoke the RPC call.
-
#initialize(stub_method, stub_logger: nil, method_name: nil) ⇒ RpcCall
constructor
Creates an API object for making a single RPC call.
Constructor Details
#initialize(stub_method, stub_logger: nil, method_name: nil) ⇒ RpcCall
Creates an API object for making a single RPC call.
In typical usage, stub_method
will be a proc used to make an RPC request. This will mostly likely be a bound
method from a request Stub used to make an RPC call.
The result is created by applying a series of function decorators defined in this module to stub_method
.
The result is another proc which has the same signature as the original.
36 37 38 39 40 41 |
# File 'lib/gapic/grpc/service_stub/rpc_call.rb', line 36 def initialize stub_method, stub_logger: nil, method_name: nil @stub_method = stub_method @stub_logger = stub_logger @method_name = method_name @request_id = LoggingConcerns.random_uuid4 end |
Instance Attribute Details
#stub_method ⇒ Object (readonly)
Returns the value of attribute stub_method.
22 23 24 |
# File 'lib/gapic/grpc/service_stub/rpc_call.rb', line 22 def stub_method @stub_method end |
Instance Method Details
#call(request, options: nil) {|response, operation| ... } ⇒ Object
Invoke the RPC call.
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
# File 'lib/gapic/grpc/service_stub/rpc_call.rb', line 119 def call request, options: nil # Converts hash and nil to an options object = Gapic::CallOptions.new(**.to_h) if .respond_to? :to_h deadline = calculate_deadline = . try_number = 1 retried_exception = nil begin request = log_request request, , try_number operation = stub_method.call request, deadline: deadline, metadata: , return_op: true response = operation.execute catch :response do response = log_response response, try_number yield response, operation if block_given? response end rescue ::GRPC::DeadlineExceeded => e log_response e, try_number raise Gapic::GRPC::DeadlineExceededError.new e., root_cause: retried_exception rescue StandardError => e e = normalize_exception e log_response e, try_number if check_retry?(deadline) && .retry_policy.call(e) retried_exception = e try_number += 1 retry end raise e end end |