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
|