1use std::sync::{Arc, Mutex};
2use crate::models::editable_persist::EditablePersist;
3use crate::models::in_row_iter::InRowIter;
4use crate::parallel::row_parallel::RowParallel;
5
6pub fn execute_task_in_thread<'mmap,Closure, Param>(
8 slice: &'mmap [u8],
9 line_break: u8,
10 field_separator: u8,
11 string_delimiter: u8,
12 force_memchr: bool,
13 mut func: Closure,
14 param: Arc<Mutex<Param>>,
15 thread_id: usize,
16)
17where
18 Closure: FnMut(&mut RowParallel<'mmap>,usize, Arc<Mutex<Param>>) + Send,
19 Param: Send + 'mmap,
20{
21 let mut iterator = InRowIter::new(slice, line_break, string_delimiter);
23 let mut acumulator = 0usize;
24 while let Some(row_data) = iterator.next() {
25 if acumulator == 0{
26 acumulator = iterator.get_cursor();
27 }
28 let mut row = RowParallel::new(slice,row_data, iterator.get_cursor(),line_break, field_separator, string_delimiter, force_memchr);
29 row.set_global_cursor(acumulator);
30 func(&mut row,thread_id, param.clone()); acumulator += iterator.get_cursor();
32 }
33}
34
35
36
37pub fn execute_task_with_param_thread<'mmap,Closure, Param, CloneParam>(
38 slice: &'mmap [u8],
39 line_break: u8,
40 field_separator: u8,
41 string_delimiter: u8,
42 force_memchr: bool,
43 mut func: Closure,
44 param: Arc<Mutex<Param>>,
45 thread_param: EditablePersist<CloneParam>,
46 thread_id: usize,
47)
48where Closure: FnMut(&mut RowParallel<'mmap>,usize, Arc<Mutex<Param>>, &mut EditablePersist<CloneParam>) + Send,
49 Param: Send + 'mmap,
50 CloneParam: Clone,
51
52{
53 let mut iterator = InRowIter::new(slice, line_break, string_delimiter);
55 let mut acumulator = 0usize;
56 let mut param_thread = thread_param.clone();
57 while let Some(row_data) = iterator.next() {
58 if acumulator == 0{
59 acumulator = iterator.get_cursor();
60 }
61 let mut row = RowParallel::new(slice,row_data, iterator.get_cursor(),line_break, field_separator, string_delimiter, force_memchr);
62 row.set_global_cursor(acumulator);
63 func(&mut row,thread_id, param.clone(), &mut param_thread);
64 acumulator += iterator.get_cursor();
65 }
66}