MCPcopy Create free account
hub / github.com/NativeScript/SimDeck / snapshot

Method snapshot

packages/server/src/performance.rs:198–252  ·  view source on GitHub ↗
(
        &self,
        udid: &str,
        query: PerformanceQuery,
        foreground: Option<ForegroundProcess>,
        display_signal: DisplaySignal,
    )

Source from the content-addressed store, hash-verified

196 }
197
198 pub async fn snapshot(
199 &self,
200 udid: &str,
201 query: PerformanceQuery,
202 foreground: Option<ForegroundProcess>,
203 display_signal: DisplaySignal,
204 ) -> Result<SimulatorPerformanceSnapshot, AppError> {
205 let sampled_at = now_ms();
206 let mut warnings = Vec::new();
207 let ps = list_ps_processes().await?;
208 let mut processes = app_processes_from_ps(udid, foreground.as_ref(), ps);
209 if let Some(foreground) = foreground.as_ref() {
210 ensure_foreground_process(&mut processes, foreground).await;
211 }
212 processes.sort_by_key(|process| (!process.is_foreground, process.process.clone()));
213
214 let selected_pid = query
215 .pid
216 .or_else(|| {
217 foreground
218 .as_ref()
219 .map(|process| process.process_identifier as i32)
220 })
221 .or_else(|| processes.first().map(|process| process.pid));
222
223 if processes.is_empty() {
224 warnings.push("No simulator app process matched this UDID yet.".to_owned());
225 }
226
227 let mut raw_samples = Vec::new();
228 for process in &processes {
229 raw_samples
230 .push(sample_process(process.clone(), selected_pid == Some(process.pid)).await);
231 }
232
233 let selected_pid =
234 selected_pid.filter(|pid| raw_samples.iter().any(|sample| sample.process.pid == *pid));
235 let (current, history) = self.merge_samples(
236 raw_samples,
237 selected_pid,
238 display_signal,
239 query.history_window_ms,
240 );
241
242 Ok(SimulatorPerformanceSnapshot {
243 udid: udid.to_owned(),
244 sampled_at,
245 selected_pid,
246 foreground_process: foreground,
247 processes,
248 current,
249 history,
250 warnings,
251 })
252 }
253
254 fn merge_samples(
255 &self,

Callers

nothing calls this directly

Calls 8

list_ps_processesFunction · 0.85
app_processes_from_psFunction · 0.85
sample_processFunction · 0.85
is_emptyMethod · 0.80
merge_samplesMethod · 0.80
now_msFunction · 0.70
cloneMethod · 0.65

Tested by

no test coverage detected