Class: GrpcKit::Session::DrainController
- Inherits:
-
Object
- Object
- GrpcKit::Session::DrainController
- Defined in:
- lib/grpc_kit/session/drain_controller.rb
Instance Method Summary collapse
- #call(session) ⇒ Object
-
#initialize ⇒ DrainController
constructor
A new instance of DrainController.
- #recv_ping_ack ⇒ Object
Constructor Details
#initialize ⇒ DrainController
Returns a new instance of DrainController.
8 9 10 11 12 13 |
# File 'lib/grpc_kit/session/drain_controller.rb', line 8 def initialize @sent_shutdown_notice = false @goaway_sent = false @after_one_rtt = false # @sent_ping = false end |
Instance Method Details
#call(session) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/grpc_kit/session/drain_controller.rb', line 19 def call(session) if @goaway_sent # session.shutdown elsif @sent_shutdown_notice && @after_one_rtt session.submit_goaway(DS9::NO_ERROR, session.last_proc_stream_id) @goaway_sent = true # elsif @sent_shutdown_notice && !@after_one_rtt && !@sent_ping # @sent_ping = true elsif !@sent_shutdown_notice session.submit_shutdown @sent_shutdown_notice = true session.submit_ping # wait for 1 RTT end end |
#recv_ping_ack ⇒ Object
15 16 17 |
# File 'lib/grpc_kit/session/drain_controller.rb', line 15 def recv_ping_ack @after_one_rtt = true end |