Class: ConfCtl::StdLineBuffer
- Inherits:
-
Object
- Object
- ConfCtl::StdLineBuffer
- Defined in:
- lib/confctl/std_line_buffer.rb
Overview
Pair of line buffers for standard output/error
Instance Method Summary collapse
-
#feed_block ⇒ Proc
Get a block which can be called to feed data to the buffer.
- #flush ⇒ Object
-
#initialize {|out, err| ... } ⇒ StdLineBuffer
constructor
A new instance of StdLineBuffer.
Constructor Details
#initialize {|out, err| ... } ⇒ StdLineBuffer
Returns a new instance of StdLineBuffer.
6 7 8 9 10 11 |
# File 'lib/confctl/std_line_buffer.rb', line 6 def initialize(&block) @out_buffer = LineBuffer.new @err_buffer = LineBuffer.new @block = block @mutex = Mutex.new end |
Instance Method Details
#feed_block ⇒ Proc
Get a block which can be called to feed data to the buffer
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/confctl/std_line_buffer.rb', line 15 def feed_block proc do |stdout, stderr| @mutex.synchronize do out_buffer << stdout if stdout err_buffer << stderr if stderr loop do out_line = out_buffer.read_line err_line = err_buffer.read_line break if out_line.nil? && err_line.nil? block.call(out_line, err_line) end end end end |
#flush ⇒ Object
32 33 34 |
# File 'lib/confctl/std_line_buffer.rb', line 32 def flush block.call(out_buffer.flush, err_buffer.flush) end |