Class: Gritz::Client::CallContext

Inherits:
Object
  • Object
show all
Defined in:
/home/runner/work/gritz/gritz/sources/gritz-core/lib/gritz/client/call_context.rb

Overview

Middleware state for an outgoing RPC, independent of its transport.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(method:, kind:, request:, options:, parent:, terminal:) ⇒ CallContext

Returns a new instance of CallContext.



13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File '/home/runner/work/gritz/gritz/sources/gritz-core/lib/gritz/client/call_context.rb', line 13

def initialize(method:, kind:, request:, options:, parent:, terminal:)
  service, name = method.delete_prefix("/").split("/", 2)
  @method = MethodDescriptor.new(service:, name:, input_type: nil, output_type: nil,
                                 client_streaming: %i[client_streaming bidi].include?(kind),
                                 server_streaming: %i[server_streaming bidi].include?(kind))
  @kind = kind
  @request = request
  @options = options
  @parent = parent
  @terminal = terminal
  @store = {}
  @logger = parent&.logger || Logger.new($stderr)
  @trace_context = parent&.trace_context
end

Instance Attribute Details

#kind ⇒ Object (readonly)



10
11
12
# File '/home/runner/work/gritz/gritz/sources/gritz-core/lib/gritz/client/call_context.rb', line 10

def kind
  @kind
end

#logger ⇒ Object (readonly)



10
11
12
# File '/home/runner/work/gritz/gritz/sources/gritz-core/lib/gritz/client/call_context.rb', line 10

def logger
  @logger
end

#method ⇒ Object (readonly)



10
11
12
# File '/home/runner/work/gritz/gritz/sources/gritz-core/lib/gritz/client/call_context.rb', line 10

def method
  @method
end

#operation ⇒ Object



11
12
13
# File '/home/runner/work/gritz/gritz/sources/gritz-core/lib/gritz/client/call_context.rb', line 11

def operation
  @operation
end

#options ⇒ Object (readonly)



10
11
12
# File '/home/runner/work/gritz/gritz/sources/gritz-core/lib/gritz/client/call_context.rb', line 10

def options
  @options
end

#parent ⇒ Object (readonly)



10
11
12
# File '/home/runner/work/gritz/gritz/sources/gritz-core/lib/gritz/client/call_context.rb', line 10

def parent
  @parent
end

#request ⇒ Object



11
12
13
# File '/home/runner/work/gritz/gritz/sources/gritz-core/lib/gritz/client/call_context.rb', line 11

def request
  @request
end

#response_block ⇒ Object



11
12
13
# File '/home/runner/work/gritz/gritz/sources/gritz-core/lib/gritz/client/call_context.rb', line 11

def response_block
  @response_block
end

#store ⇒ Object (readonly)



10
11
12
# File '/home/runner/work/gritz/gritz/sources/gritz-core/lib/gritz/client/call_context.rb', line 10

def store
  @store
end

#trace_context ⇒ Object



11
12
13
# File '/home/runner/work/gritz/gritz/sources/gritz-core/lib/gritz/client/call_context.rb', line 11

def trace_context
  @trace_context
end

Instance Method Details

#cancelled? ⇒ Boolean

Returns:

  • (Boolean)


32
# File '/home/runner/work/gritz/gritz/sources/gritz-core/lib/gritz/client/call_context.rb', line 32

def cancelled? = !!(store[:gritz_cancelled] || parent&.cancelled? || operation&.cancelled?)

#check_cancelled! ⇒ Object

Raises:



38
39
40
# File '/home/runner/work/gritz/gritz/sources/gritz-core/lib/gritz/client/call_context.rb', line 38

def check_cancelled!
  raise Errors::Cancelled, "request cancelled" if cancelled?
end

#check_deadline! ⇒ Object



34
35
36
# File '/home/runner/work/gritz/gritz/sources/gritz-core/lib/gritz/client/call_context.rb', line 34

def check_deadline!
  raise Errors::DeadlineExceeded, "deadline exceeded" if deadline && remaining.zero?
end

#deadline ⇒ Object



29
# File '/home/runner/work/gritz/gritz/sources/gritz-core/lib/gritz/client/call_context.rb', line 29

def deadline = options[:deadline]

#metadata ⇒ Object



28
# File '/home/runner/work/gritz/gritz/sources/gritz-core/lib/gritz/client/call_context.rb', line 28

def  = options[:metadata]

#remaining ⇒ Object



30
# File '/home/runner/work/gritz/gritz/sources/gritz-core/lib/gritz/client/call_context.rb', line 30

def remaining = deadline && [deadline - Time.now, 0.0].max

#request_id ⇒ Object



31
# File '/home/runner/work/gritz/gritz/sources/gritz-core/lib/gritz/client/call_context.rb', line 31

def request_id = ["x-request-id"]