Class: DTAS::Buffer
- Inherits:
-
Object
- Object
- DTAS::Buffer
- Defined in:
- lib/dtas/buffer.rb
Overview
:nodoc:
Defined Under Namespace
Instance Attribute Summary collapse
-
#bytes_xfer ⇒ Object
Returns the value of attribute bytes_xfer.
-
#to_io ⇒ Object
readonly
call nread on this.
-
#wr ⇒ Object
readonly
processes (sources) should redirect to this.
Class Method Summary collapse
Instance Method Summary collapse
- #__dst_error(dst, e) ⇒ Object
-
#broadcast(targets) ⇒ Object
This will modify targets returns one of: - :wait_readable - subset of targets array for :wait_writable - some type of StandardError - nil.
- #buf_reset ⇒ Object
-
#close ⇒ Object
don’t really close the pipes under normal circumstances, just clear data.
- #close! ⇒ Object
- #inflight ⇒ Object
-
#initialize ⇒ Buffer
constructor
A new instance of Buffer.
- #readable_iter {|_self, nil| ... } ⇒ Object
- #to_hsh ⇒ Object
Constructor Details
Instance Attribute Details
#bytes_xfer ⇒ Object
Returns the value of attribute bytes_xfer.
20 21 22 |
# File 'lib/dtas/buffer.rb', line 20 def bytes_xfer @bytes_xfer end |
#to_io ⇒ Object (readonly)
call nread on this
18 19 20 |
# File 'lib/dtas/buffer.rb', line 18 def to_io @to_io end |
#wr ⇒ Object (readonly)
processes (sources) should redirect to this
19 20 21 |
# File 'lib/dtas/buffer.rb', line 19 def wr @wr end |
Class Method Details
.load(hash) ⇒ Object
28 29 30 31 32 33 34 |
# File 'lib/dtas/buffer.rb', line 28 def self.load(hash) buf = new if hash bs = hash["buffer_size"] and buf.buffer_size = bs end buf end |
Instance Method Details
#__dst_error(dst, e) ⇒ Object
40 41 42 43 |
# File 'lib/dtas/buffer.rb', line 40 def __dst_error(dst, e) warn "dropping #{dst.inspect} due to error: #{e.} (#{e.class})" dst.close unless dst.closed? end |
#broadcast(targets) ⇒ Object
This will modify targets returns one of:
-
:wait_readable
-
subset of targets array for :wait_writable
-
some type of StandardError
-
nil
51 52 53 54 55 56 57 58 59 60 |
# File 'lib/dtas/buffer.rb', line 51 def broadcast(targets) case targets.size when 0 :ignore # this will pause decoders when 1 broadcast_one(targets) else # infinity broadcast_inf(targets) end end |
#buf_reset ⇒ Object
77 78 79 80 81 82 |
# File 'lib/dtas/buffer.rb', line 77 def buf_reset close! @bytes_xfer = 0 @to_io, @wr = DTAS::Pipe.new @wr.pipe_size = @buffer_size if @buffer_size end |
#close ⇒ Object
don’t really close the pipes under normal circumstances, just clear data
72 73 74 75 |
# File 'lib/dtas/buffer.rb', line 72 def close bytes = inflight discard(bytes) if bytes > 0 end |
#close! ⇒ Object
84 85 86 87 |
# File 'lib/dtas/buffer.rb', line 84 def close! @to_io.close @wr.close end |
#inflight ⇒ Object
67 68 69 |
# File 'lib/dtas/buffer.rb', line 67 def inflight @to_io.nread end |
#readable_iter {|_self, nil| ... } ⇒ Object
62 63 64 65 |
# File 'lib/dtas/buffer.rb', line 62 def readable_iter # this calls DTAS::Buffer#broadcast from DTAS::Player yield(self, nil) end |
#to_hsh ⇒ Object
36 37 38 |
# File 'lib/dtas/buffer.rb', line 36 def to_hsh @buffer_size ? { "buffer_size" => @buffer_size } : {} end |