MCPcopy Create free account
hub / github.com/dfinity/orbit / poll_request_completion

Function poll_request_completion

tests/integration/src/dfx_orbit/util.rs:18–54  ·  view source on GitHub ↗

Wait on a request to succeed (reach status completed)

(
    dfx_orbit: &DfxOrbit,
    request_id: UuidDTO,
    timeout: Duration,
)

Source from the content-addressed store, hash-verified

16
17/// Wait on a request to succeed (reach status completed)
18pub(super) async fn poll_request_completion(
19 dfx_orbit: &DfxOrbit,
20 request_id: UuidDTO,
21 timeout: Duration,
22) {
23 let timeout = Instant::now() + timeout;
24
25 loop {
26 let request = dfx_orbit
27 .station
28 .review_id(GetRequestInput {
29 request_id: request_id.clone(),
30 with_full_info: None,
31 })
32 .await
33 .unwrap();
34
35 match request.request.status {
36 RequestStatusDTO::Completed { .. } => return,
37 RequestStatusDTO::Rejected
38 | RequestStatusDTO::Cancelled { .. }
39 | RequestStatusDTO::Failed { .. } => {
40 panic!("Expected request {request_id} to succeed")
41 }
42 RequestStatusDTO::Approved
43 | RequestStatusDTO::Created
44 | RequestStatusDTO::Scheduled { .. }
45 | RequestStatusDTO::Processing { .. } => (),
46 }
47
48 if Instant::now() > timeout {
49 panic!("Waiting for request {request_id} to succeed timed out");
50 }
51
52 tokio::time::sleep(Duration::from_secs(1)).await
53 }
54}
55
56/// Fetches an asset from the local host and port
57///

Callers 1

change_controllersFunction · 0.85

Calls 1

review_idMethod · 0.80

Tested by 1

change_controllersFunction · 0.68