Class: Google::Apis::Core::CompositeIO
- Inherits:
 - 
      Object
      
        
- Object
 - Google::Apis::Core::CompositeIO
 
 
- Defined in:
 - lib/google/apis/core/composite_io.rb
 
Instance Method Summary collapse
- 
  
    
      #initialize(*ios)  ⇒ CompositeIO 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    
A new instance of CompositeIO.
 - #pos ⇒ Object
 - #pos=(pos) ⇒ Object
 - #read(length = nil, buf = nil) ⇒ Object
 - #rewind ⇒ Object
 - #size ⇒ Object (also: #length)
 
Constructor Details
#initialize(*ios) ⇒ CompositeIO
Returns a new instance of CompositeIO
      37 38 39 40 41 42  | 
    
      # File 'lib/google/apis/core/composite_io.rb', line 37 def initialize(*ios) @ios = ios.flatten @pos = 0 @index = 0 @sizes = @ios.map(&:size) end  | 
  
Instance Method Details
#pos ⇒ Object
      69 70 71  | 
    
      # File 'lib/google/apis/core/composite_io.rb', line 69 def pos @pos end  | 
  
#pos=(pos) ⇒ Object
      73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89  | 
    
      # File 'lib/google/apis/core/composite_io.rb', line 73 def pos=(pos) fail ArgumentError, "Position can not be negative" if pos < 0 @pos = pos new_index = nil @ios.each_with_index do |io,idx| size = io.size if pos <= size new_index ||= idx io.pos = pos pos = 0 else io.pos = size pos -= size end end @index = new_index unless new_index.nil? end  | 
  
#read(length = nil, buf = nil) ⇒ Object
      44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61  | 
    
      # File 'lib/google/apis/core/composite_io.rb', line 44 def read(length = nil, buf = nil) buf = buf ? buf.replace('') : '' begin io = @ios[@index] break if io.nil? result = io.read(length) if result buf << result if length length -= result.length break if length == 0 end end @index += 1 end while @index < @ios.length buf.length > 0 ? buf : nil end  | 
  
#rewind ⇒ Object
      91 92 93  | 
    
      # File 'lib/google/apis/core/composite_io.rb', line 91 def rewind self.pos = 0 end  | 
  
#size ⇒ Object Also known as: length
      63 64 65  | 
    
      # File 'lib/google/apis/core/composite_io.rb', line 63 def size @sizes.reduce(:+) end  |