Class: Tubeclip::GreedyChainIO
- Defined in:
- lib/tubeclip/chain_io.rb
Overview
Net::HTTP only can send chunks of 1024 bytes. This is very inefficient, so we have a spare IO that will send more when asked for 1024. We use delegation because the read call is recursive.
Constant Summary collapse
- BIG_CHUNK =
500 kb
512 * 1024
Instance Attribute Summary
Attributes inherited from ChainIO
Instance Method Summary collapse
-
#initialize(*with_ios) ⇒ GreedyChainIO
constructor
A new instance of GreedyChainIO.
- #length ⇒ Object
- #read(size = BIG_CHUNK, dst_buf = nil) ⇒ Object
Methods inherited from ChainIO
Constructor Details
#initialize(*with_ios) ⇒ GreedyChainIO
Returns a new instance of GreedyChainIO.
62 63 64 |
# File 'lib/tubeclip/chain_io.rb', line 62 def initialize(*with_ios) __setobj__(Tubeclip::ChainIO.new(with_ios)) end |
Instance Method Details
#length ⇒ Object
73 74 75 |
# File 'lib/tubeclip/chain_io.rb', line 73 def length() __getobj__.expected_length end |
#read(size = BIG_CHUNK, dst_buf = nil) ⇒ Object
66 67 68 69 70 71 |
# File 'lib/tubeclip/chain_io.rb', line 66 def read(size = BIG_CHUNK, dst_buf = nil) src_buf = __getobj__.read(size) return nil unless src_buf copy_buf(src_buf, dst_buf) if dst_buf src_buf end |