Method: Reader#stream_data

Defined in:
lib/surpass/document.rb

#stream_data(data, sat, start_sid, sect_size) ⇒ Object



150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
# File 'lib/surpass/document.rb', line 150

def stream_data(data, sat, start_sid, sect_size)
  sid = start_sid
  chunks = [[sid, sid]]
  stream_data = ''
  while sat[sid] >= 0 do
      next_in_chain = sat[sid]
      last_chunk_start, last_chunk_finish = chunks[-1]
      if next_in_chain == last_chunk_finish + 1
          chunks[-1] = last_chunk_start, next_in_chain
      else
          chunks << [next_in_chain, next_in_chain]
      end
      sid = next_in_chain
  end
  
  chunks.each do |s, f|
    stream_data += data[s*sect_size...(f+1)*sect_size]
  end
  stream_data
end