Class: GrpcKit::Session::DrainController
- Inherits:
- 
      Object
      
        - Object
- GrpcKit::Session::DrainController
 
- Defined in:
- lib/grpc_kit/session/drain_controller.rb
Defined Under Namespace
Modules: Status
Instance Method Summary collapse
- 
  
    
      #initialize(draining_time = 5)  ⇒ DrainController 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    A new instance of DrainController. 
- #next(session) ⇒ void
- #recv_ping_ack ⇒ void
- #start_draining ⇒ Object
- #start_draining? ⇒ Boolean
Constructor Details
#initialize(draining_time = 5) ⇒ DrainController
Returns a new instance of DrainController.
| 17 18 19 20 | # File 'lib/grpc_kit/session/drain_controller.rb', line 17 def initialize(draining_time = 5) @draining_time = draining_time @status = Status::NOT_START end | 
Instance Method Details
#next(session) ⇒ void
This method returns an undefined value.
| 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | # File 'lib/grpc_kit/session/drain_controller.rb', line 38 def next(session) case @status when Status::NOT_START # next_step when Status::STARTED session.submit_shutdown next_step when Status::SENT_SHUTDOWN session.submit_ping @sent_time = Time.now.to_i next_step when Status::SENT_PING # skip until #recv_ping_ack is called (1RTT) when Status::RECV_PING_ACK if @sent_time && (Time.now.to_i - @sent_time) > @draining_time return end session.submit_goaway(session.last_proc_stream_id, DS9::NO_ERROR) next_step when Status::SENT_GOAWAY # session.shutdown end end | 
#recv_ping_ack ⇒ void
This method returns an undefined value.
| 31 32 33 34 35 | # File 'lib/grpc_kit/session/drain_controller.rb', line 31 def recv_ping_ack if @status == Status::SENT_PING next_step end end |