MCPcopy Index your code
hub / github.com/devcontainers/cli / startEventSeenPolling

Function startEventSeenPolling

src/spec-node/utils.ts:217–244  ·  view source on GitHub ↗
(params: DockerResolverParameters, labels: Record<string, string>, canceled: Promise<void>, output: Log, trace: boolean)

Source from the content-addressed store, hash-verified

215
216// Polling-based fallback for runtimes that don't support `events` (e.g., wslc).
217function startEventSeenPolling(params: DockerResolverParameters, labels: Record<string, string>, canceled: Promise<void>, output: Log, trace: boolean) {
218 let stopped = false;
219 canceled.catch(() => { stopped = true; });
220 const labelFilters = Object.entries(labels).map(([k, v]) => `${k}=${v}`);
221 return {
222 started: new Promise<void>((resolve, reject) => {
223 canceled.catch(reject);
224 const poll = async () => {
225 while (!stopped) {
226 try {
227 const containers = await listContainers(params, false, labelFilters);
228 if (trace) {
229 output.write(`Log: startEventSeenPolling found ${containers.length} container(s)\r\n`);
230 }
231 if (containers.length > 0) {
232 resolve();
233 return;
234 }
235 } catch (e) {
236 // Ignore transient errors during polling.
237 }
238 await delay(500);
239 }
240 };
241 poll();
242 })
243 };
244}
245
246async function hasLabels(params: DockerResolverParameters, info: any, expectedLabels: Record<string, string>) {
247 const actualLabels = info.Actor?.Attributes

Callers 1

startEventSeenFunction · 0.85

Calls 1

pollFunction · 0.85

Tested by

no test coverage detected