Class: Socket::HostnameResolutionQueue
Relationships & Source Files | |
Inherits: | Object |
Defined in: | ext/socket/lib/socket.rb |
Class Method Summary
- .new(size) ⇒ HostnameResolutionQueue constructor
Instance Attribute Summary
- #closed? ⇒ Boolean readonly
- #opened? ⇒ Boolean readonly
Instance Method Summary
Constructor Details
.new(size) ⇒ HostnameResolutionQueue
# File 'ext/socket/lib/socket.rb', line 1049
def initialize(size) @size = size @taken_count = 0 @rpipe, @wpipe = IO.pipe @queue = Queue.new @mutex = Mutex.new end
Instance Attribute Details
#closed? ⇒ Boolean
(readonly)
[ GitHub ]
# File 'ext/socket/lib/socket.rb', line 1090
def closed? @rpipe.closed? end
#opened? ⇒ Boolean
(readonly)
[ GitHub ]
# File 'ext/socket/lib/socket.rb', line 1094
def opened? !closed? end
Instance Method Details
#add_error(family, error)
[ GitHub ]# File 'ext/socket/lib/socket.rb', line 1068
def add_error(family, error) @mutex.synchronize do @queue.push [family, error] @wpipe.putc HOSTNAME_RESOLUTION_QUEUE_UPDATED end end
#add_resolved(family, resolved_addrinfos)
[ GitHub ]# File 'ext/socket/lib/socket.rb', line 1061
def add_resolved(family, resolved_addrinfos) @mutex.synchronize do @queue.push [family, resolved_addrinfos] @wpipe.putc HOSTNAME_RESOLUTION_QUEUE_UPDATED end end
#close_all
[ GitHub ]#get
[ GitHub ]# File 'ext/socket/lib/socket.rb', line 1075
def get return nil if @queue.empty? res = nil @mutex.synchronize do @rpipe.getbyte res = @queue.pop end @taken_count += 1 close_all if @taken_count == @size res end
#waiting_pipe
[ GitHub ]# File 'ext/socket/lib/socket.rb', line 1057
def waiting_pipe [@rpipe] end