fn prepare_data_collector()

in src/data/java_profile.rs [141:177]


    fn prepare_data_collector(&mut self, params: &CollectorParams) -> Result<()> {
        let mut jids: Vec<String> = Vec::new();
        let pgrep: Vec<String> = self.launch_pgrep()?;
        for pid in pgrep {
            if self.process_map.contains_key(&pid) {
                continue;
            }
            self.process_map
                .insert(pid.clone(), vec![String::from("Could not resolve name!")]);
        }

        let jps_str = self.update_process_map()?;
        let jps: Vec<&str> = jps_str.split_whitespace().collect();

        let jprofile_value = params.profile.get(JAVA_PROFILE_FILE_NAME);
        if let Some(value) = jprofile_value {
            match value.as_str() {
                "jps" => {
                    jids = self.process_map.clone().into_keys().collect();
                    debug!("Jps will be run if new JVM is started during aperf record to resolve process names.",);
                }
                _ => {
                    let args: Vec<&str> = value.split(',').collect();
                    for arg in args {
                        if !jps.contains(&arg) {
                            error!("No JVM with name/PID '{}'.", arg);
                            continue;
                        }
                        jids.append(&mut self.get_jids(arg));
                    }
                }
            }
        }
        jids.sort();
        jids.dedup();
        self.launch_asprof(jids, params)
    }