45 |
|
|
46 |
(* |
(* |
47 |
let chunk_pos i = |
let chunk_pos i = |
48 |
Int64.mul (Int64.of_int i) block_size |
(Int64.of_int i) ** block_size |
49 |
|
|
50 |
let chunk_end file i = |
let chunk_end file i = |
51 |
let pos = Int64.mul (Int64.of_int (i+1)) block_size in |
let pos = (Int64.of_int (i+1)) ** block_size in |
52 |
if pos > file_size file then |
if pos > file_size file then |
53 |
file_size file else pos |
file_size file else pos |
54 |
|
|
57 |
let file_md4s = Array.of_list file.file_md4s in |
let file_md4s = Array.of_list file.file_md4s in |
58 |
let begin_pos = chunk_pos i in |
let begin_pos = chunk_pos i in |
59 |
let end_pos = chunk_end file i in |
let end_pos = chunk_end file i in |
60 |
let len = Int64.sub end_pos begin_pos in |
let len = end_pos -- begin_pos in |
61 |
let md4 = file_md4s.(i) in |
let md4 = file_md4s.(i) in |
62 |
if !verbose then begin |
if !verbose then begin |
63 |
lprintf "verify_chunk %s[%d] %Ld[%Ld]\n" |
lprintf "verify_chunk %s[%d] %Ld[%Ld]\n" |
169 |
match file.file_chunks.(i) with |
match file.file_chunks.(i) with |
170 |
PresentTemp | PresentVerified -> Int64.zero |
PresentTemp | PresentVerified -> Int64.zero |
171 |
| AbsentTemp | AbsentVerified -> |
| AbsentTemp | AbsentVerified -> |
172 |
Int64.sub (chunk_end file i) (chunk_pos i) |
(chunk_end file i) -- (chunk_pos i) |
173 |
| PartialTemp b | PartialVerified b -> |
| PartialTemp b | PartialVerified b -> |
174 |
let absent = ref Int64.zero in |
let absent = ref Int64.zero in |
175 |
List.iter (fun z -> |
List.iter (fun z -> |
176 |
absent := Int64.add !absent ( |
absent := !absent ++ (z.zone_end -- z.zone_begin) |
|
Int64.sub z.zone_end z.zone_begin) |
|
177 |
) b.block_zones; |
) b.block_zones; |
178 |
!absent |
!absent |
179 |
|
|
182 |
|
|
183 |
let absents = ref Int64.zero in |
let absents = ref Int64.zero in |
184 |
for i = 0 to file.file_nchunks - 1 do |
for i = 0 to file.file_nchunks - 1 do |
185 |
absents := Int64.add !absents (chunk_compute_missing file i) |
absents := !absents ++ (chunk_compute_missing file i) |
186 |
done; |
done; |
187 |
let current = Int64.sub (file_size file) !absents in |
let current = (file_size file) -- !absents in |
188 |
file.file_file.impl_file_downloaded <- current; |
file.file_file.impl_file_downloaded <- current; |
189 |
if file_downloaded file > file_size file then begin |
if file_downloaded file > file_size file then begin |
190 |
lprintf "******* downloaded %Ld > %Ld size after compute_size ***** for %s\n" |
lprintf "******* downloaded %Ld > %Ld size after compute_size ***** for %s\n" |
219 |
PartialTemp bloc -> PartialVerified bloc |
PartialTemp bloc -> PartialVerified bloc |
220 |
| PresentTemp -> |
| PresentTemp -> |
221 |
file.file_file.impl_file_downloaded <- |
file.file_file.impl_file_downloaded <- |
222 |
Int64.sub (file_downloaded file) block_size; |
(file_downloaded file) -- block_size; |
223 |
|
|
224 |
if file_downloaded file > file_size file then begin |
if file_downloaded file > file_size file then begin |
225 |
lprintf "******* downloaded %Ld > %Ld size after verify_chunks ***** for %s\n" |
lprintf "******* downloaded %Ld > %Ld size after verify_chunks ***** for %s\n" |
273 |
for i = 0 to Array.length md4s - 1 do |
for i = 0 to Array.length md4s - 1 do |
274 |
let md4 = md4s.(i) in |
let md4 = md4s.(i) in |
275 |
let chunk_pos = block_size *.. i in |
let chunk_pos = block_size *.. i in |
276 |
let chunk_end = Int64.add chunk_pos block_size in |
let chunk_end = chunk_pos ++ block_size in |
277 |
let chunk_size = if chunk_end > file_size then |
let chunk_size = if chunk_end > file_size then |
278 |
Int64.sub file_size chunk_pos else block_size in |
file_size -- chunk_pos else block_size in |
279 |
register_md4 i md4 chunk_pos chunk_size file_num; |
register_md4 i md4 chunk_pos chunk_size file_num; |
280 |
done |
done |
281 |
|
|
346 |
for i = 0 to Array.length file.file_md4s - 1 do |
for i = 0 to Array.length file.file_md4s - 1 do |
347 |
let chunk_pos = block_size *.. i in |
let chunk_pos = block_size *.. i in |
348 |
let md4 = file.file_md4s.(i) in |
let md4 = file.file_md4s.(i) in |
349 |
let chunk_end = Int64.add chunk_pos block_size in |
let chunk_end = chunk_pos ++ block_size in |
350 |
let chunk_size = if chunk_end > file_size then |
let chunk_size = if chunk_end > file_size then |
351 |
Int64.sub file_size chunk_pos else block_size in |
file_size -- chunk_pos else block_size in |
352 |
|
|
353 |
(try |
(try |
354 |
if bitmap.[i] < '3' then |
if bitmap.[i] < '3' then |