34 |
|
|
35 |
let (fifo : string job Fifo.t) = Fifo.create () |
let (fifo : string job Fifo.t) = Fifo.create () |
36 |
let current_job = ref None |
let current_job = ref None |
37 |
|
|
38 |
external job_done : 'a job -> bool = "ml_job_done" |
external job_done : 'a job -> bool = "ml_job_done" |
39 |
external job_start : 'a job -> Unix.file_descr -> unit = "ml_job_start" |
external job_start : 'a job -> Unix.file_descr -> unit = "ml_job_start" |
40 |
|
|
41 |
let _ = |
let _ = |
42 |
BasicSocket.add_infinite_timer 0.1 (fun _ -> |
BasicSocket.add_infinite_timer 0.1 (fun _ -> |
43 |
(* lprintf "test job\n"; *) |
(* lprintf "test job\n"; *) |
47 |
| Some (job, fd) -> |
| Some (job, fd) -> |
48 |
(* lprintf "job done\n"; *) |
(* lprintf "job done\n"; *) |
49 |
if job_done job then begin |
if job_done job then begin |
50 |
if !verbose_md4 then begin |
if !verbose_md4 then |
51 |
lprintf "Job finished\n"; |
lprintf_nl "[cHa] Job finished"; |
|
end; |
|
52 |
current_job := None; |
current_job := None; |
53 |
Unix.close fd; |
Unix.close fd; |
54 |
(try job.job_handler job with e -> |
(try job.job_handler job with e -> |
55 |
lprintf "exception %s in job_handler\n" |
lprintf_nl "[cHa] exception %s in job_handler" |
56 |
(Printexc2.to_string e); |
(Printexc2.to_string e); |
57 |
); |
); |
58 |
raise Not_found |
raise Not_found |
59 |
end |
end |
60 |
with _ -> |
with _ -> |
61 |
|
|
62 |
let job = try Fifo.take fifo |
let job = try Fifo.take fifo |
63 |
|
|
64 |
with e -> |
with e -> |
65 |
(* lprintf "No waiting job\n"; *) |
(* lprintf "No waiting job\n"; *) |
66 |
raise e |
raise e |
67 |
in |
in |
70 |
let fd = Unix.openfile job.job_name [Unix.O_RDONLY] 0o444 in |
let fd = Unix.openfile job.job_name [Unix.O_RDONLY] 0o444 in |
71 |
current_job := Some (job, fd); |
current_job := Some (job, fd); |
72 |
if !verbose_md4 then begin |
if !verbose_md4 then begin |
73 |
lprintf "Starting job %s %Ld %Ld %s\n" job.job_name |
lprintf_nl "[cHa] Starting job %s %Ld %Ld %s" job.job_name |
74 |
job.job_begin job.job_len |
job.job_begin job.job_len |
75 |
(match job.job_method with |
(match job.job_method with |
76 |
MD5 -> "MD5" |
MD5 -> "MD5" |
77 |
| TIGER -> "TIGER" |
| TIGER -> "TIGER" |
78 |
| SHA1 -> "SHA1" |
| SHA1 -> "SHA1" |
79 |
| MD4 -> "MD4"); |
| MD4 -> "MD4"); |
80 |
end; |
end; |
81 |
job_start job fd; |
job_start job fd; |
82 |
if !verbose_md4 then begin |
if !verbose_md4 then |
83 |
lprintf "Job started\n"; |
lprintf_nl "[cHa] Job started" |
|
end |
|
84 |
with e -> |
with e -> |
85 |
lprintf "Exception %s in starting job\n" |
lprintf_nl "[cHa] Exception %s in starting job" |
86 |
(Printexc2.to_string e); |
(Printexc2.to_string e); |
87 |
) |
) |
88 |
|
|
89 |
let compute_md4 name begin_pos len f = |
let compute_md4 name begin_pos len f = |
90 |
let job = { |
let job = { |
91 |
job_name = name; |
job_name = name; |
97 |
job_error = false; |
job_error = false; |
98 |
} in |
} in |
99 |
Fifo.put fifo (Obj.magic job) |
Fifo.put fifo (Obj.magic job) |
100 |
|
|
101 |
let compute_sha1 name begin_pos len f = |
let compute_sha1 name begin_pos len f = |
102 |
let job = { |
let job = { |
103 |
job_name = name; |
job_name = name; |
109 |
job_error = false; |
job_error = false; |
110 |
} in |
} in |
111 |
Fifo.put fifo (Obj.magic job) |
Fifo.put fifo (Obj.magic job) |
112 |
|
|
113 |
let compute_md5 name begin_pos len f = |
let compute_md5 name begin_pos len f = |
114 |
let job = { |
let job = { |
115 |
job_name = name; |
job_name = name; |
121 |
job_error = false; |
job_error = false; |
122 |
} in |
} in |
123 |
Fifo.put fifo (Obj.magic job) |
Fifo.put fifo (Obj.magic job) |
124 |
|
|
125 |
let compute_tiger name begin_pos len f = |
let compute_tiger name begin_pos len f = |
126 |
let job = { |
let job = { |
127 |
job_name = name; |
job_name = name; |
133 |
job_error = false; |
job_error = false; |
134 |
} in |
} in |
135 |
Fifo.put fifo (Obj.magic job) |
Fifo.put fifo (Obj.magic job) |
|
|
|