Class: Pwrake::NBIO::Writer
- Inherits:
-
Object
- Object
- Pwrake::NBIO::Writer
- Defined in:
- lib/pwrake/nbio.rb
Overview
Instance Attribute Summary collapse
-
#io ⇒ Object
readonly
Returns the value of attribute io.
Instance Method Summary collapse
-
#call ⇒ Object
call from Selector.
- #error(e) ⇒ Object
- #flush ⇒ Object
- #halt ⇒ Object
-
#initialize(selector, io) ⇒ Writer
constructor
A new instance of Writer.
-
#put_line(line, ch = nil) ⇒ Object
call from Fiber context.
- #select_io ⇒ Object
-
#write(buf, buffered = false) ⇒ Object
from Bartender.
Constructor Details
#initialize(selector, io) ⇒ Writer
Returns a new instance of Writer.
120 121 122 123 124 125 |
# File 'lib/pwrake/nbio.rb', line 120 def initialize(selector, io) @selector = selector @io = io @waiter = [] @pool = [] end |
Instance Attribute Details
#io ⇒ Object (readonly)
Returns the value of attribute io.
126 127 128 |
# File 'lib/pwrake/nbio.rb', line 126 def io @io end |
Instance Method Details
#call ⇒ Object
call from Selector
129 130 131 132 133 134 135 |
# File 'lib/pwrake/nbio.rb', line 129 def call w = @waiter @waiter = [] w.each{|f| f.resume} ensure @selector.delete_writer(self) if @waiter.empty? end |
#error(e) ⇒ Object
151 152 153 154 |
# File 'lib/pwrake/nbio.rb', line 151 def error(e) @closed = true raise e end |
#flush ⇒ Object
163 164 165 166 167 168 |
# File 'lib/pwrake/nbio.rb', line 163 def flush until @pool.empty? len = _write(@pool[0]) pop(len) end end |
#halt ⇒ Object
144 145 146 147 148 149 |
# File 'lib/pwrake/nbio.rb', line 144 def halt @halting = true call ensure @halting = false end |
#put_line(line, ch = nil) ⇒ Object
call from Fiber context
138 139 140 141 142 |
# File 'lib/pwrake/nbio.rb', line 138 def put_line(line, ch=nil) line = line.chomp line = "#{ch}:#{line}" if ch write(line+"\n") end |
#select_io ⇒ Object
170 171 172 173 174 |
# File 'lib/pwrake/nbio.rb', line 170 def select_io @selector.add_writer(self) if @waiter.empty? @waiter.push(Fiber.current) Fiber.yield end |
#write(buf, buffered = false) ⇒ Object
from Bartender
158 159 160 161 |
# File 'lib/pwrake/nbio.rb', line 158 def write(buf, buffered=false) push(buf) flush unless buffered end |