Module: H2::Blockable

Included in:
Client, Client::ReadGate, Stream
Defined in:
lib/h2.rb

Instance Method Summary collapse

Instance Method Details

#block!(timeout = nil) ⇒ Object



106
107
108
# File 'lib/h2.rb', line 106

def block! timeout = nil
  @mutex.synchronize { @condition.wait @mutex, timeout } if @condition
end

#init_blockingObject



101
102
103
104
# File 'lib/h2.rb', line 101

def init_blocking
  @mutex = Mutex.new
  @condition = ConditionVariable.new
end

#unblock!(remove_condition: true) ⇒ Object



110
111
112
113
114
115
116
# File 'lib/h2.rb', line 110

def unblock! remove_condition: true
  return unless @condition
  @mutex.synchronize do
    @condition.broadcast
    @condition = nil if remove_condition
  end
end