diff --git a/src/main.rs b/src/main.rs index ccfe39dad5862cce133bd5b815a0317a9e273526..a96567058cc0bf71f6bf57cba51508e21df19642 100644 --- a/src/main.rs +++ b/src/main.rs @@ -270,14 +270,17 @@ async fn main() -> Result<(), anyhow::Error> { .unwrap() .as_secs(); let simulation_behavior = mobility_records[i].clone(); - let relative_start_duration = mobility_records_times[i]; + let relative_start_duration = if i == 0 { + Duration::from_secs(0) + } + else { mobility_records_times[i] - mobility_records_times[i - 1] }; let rpc_url = rpc_url.clone(); let chain_id = chain_id; let mut time_since_beginning = now; + tokio::time::sleep(relative_start_duration).await; handles.push(tokio::spawn({ async move { - tokio::time::sleep(relative_start_duration).await; time_since_beginning += relative_start_duration.as_secs(); let provider = Provider::<Http>::try_from(rpc_url.clone()).unwrap(); diff --git a/src/utils/mobility_data.rs b/src/utils/mobility_data.rs index 051c0b5c6226fb31afa36e7c37a1e48739117bbd..0bf444c3d90cf4b513d64979828b2f6b8733533f 100644 --- a/src/utils/mobility_data.rs +++ b/src/utils/mobility_data.rs @@ -99,6 +99,8 @@ pub fn generate_behaviors_from_records(records: Vec<MobilityRecord>) -> Vec<Mobi let earliest_datetime = find_earliest_mobility_record(&records); // let dataset_id = thread_rng().gen::<u64>(); + let mut start_times:Vec<i128> = records.iter().map(|r| r.created_at.sub(earliest_datetime).whole_milliseconds()).collect(); + start_times.sort_unstable(); records .iter() @@ -106,11 +108,11 @@ pub fn generate_behaviors_from_records(records: Vec<MobilityRecord>) -> Vec<Mobi .map(|(i, r)| MobilityBehavior { id: i as u64, // dataset_id, - relative_start_time: r.created_at.sub(earliest_datetime).whole_milliseconds(), + relative_start_time: start_times[i], quantity: quantify_mobility(r.service.clone()), mobility_record: r.clone(), }) - .collect() + .collect::<Vec<MobilityBehavior>>() } /// Strech behavior start time for simulation