class GrpcKit::Session::ControlQueue

Public Class Methods

new(waker: proc { }) click to toggle source
# File lib/grpc_kit/session/control_queue.rb, line 6
def initialize(waker: proc { })
  @event_stream = Queue.new
  @waker = waker
end

Public Instance Methods

pop() click to toggle source

Be nonblocking

# File lib/grpc_kit/session/control_queue.rb, line 12
def pop
  if @event_stream.empty?
    nil
  else
    @event_stream.pop(true)
  end
rescue ThreadError => _
  nil
end
resume_data(id) click to toggle source
# File lib/grpc_kit/session/control_queue.rb, line 32
def resume_data(id)
  @event_stream.push([:resume_data, id])
  @waker.call(:submit_response)
end
submit_headers(id, headers) click to toggle source
# File lib/grpc_kit/session/control_queue.rb, line 27
def submit_headers(id, headers)
  @event_stream.push([:submit_headers, id, headers])
  @waker.call(:submit_headers)
end
submit_response(id, headers) click to toggle source
# File lib/grpc_kit/session/control_queue.rb, line 22
def submit_response(id, headers)
  @event_stream.push([:submit_response, id, headers])
  @waker.call(:submit_response)
end