Class: Pwrake::NBIO::FiberReaderQueue
- Inherits:
-
Object
- Object
- Pwrake::NBIO::FiberReaderQueue
- Defined in:
- lib/pwrake/nbio.rb
Overview
Instance Method Summary collapse
- #deq ⇒ Object (also: #get_line)
- #enq(x) ⇒ Object
- #halt ⇒ Object
-
#initialize(reader) ⇒ FiberReaderQueue
constructor
A new instance of FiberReaderQueue.
Constructor Details
#initialize(reader) ⇒ FiberReaderQueue
Returns a new instance of FiberReaderQueue.
382 383 384 385 386 387 |
# File 'lib/pwrake/nbio.rb', line 382 def initialize(reader) @reader = reader @q = [] @waiter = [] @halting = false end |
Instance Method Details
#deq ⇒ Object Also known as: get_line
395 396 397 398 399 400 401 402 |
# File 'lib/pwrake/nbio.rb', line 395 def deq while @q.empty? return nil if @halting @waiter.push(Fiber.current) @reader.select_io end @q.shift end |
#enq(x) ⇒ Object
389 390 391 392 393 |
# File 'lib/pwrake/nbio.rb', line 389 def enq(x) @q.push(x) f = @waiter.shift f.resume if f end |
#halt ⇒ Object
406 407 408 409 410 411 412 413 |
# File 'lib/pwrake/nbio.rb', line 406 def halt @halting = true while f = @waiter.shift f.resume end ensure @halting = false end |