diff options
Diffstat (limited to 'src/cdp/event-queue.ts')
| -rw-r--r-- | src/cdp/event-queue.ts | 38 |
1 files changed, 0 insertions, 38 deletions
diff --git a/src/cdp/event-queue.ts b/src/cdp/event-queue.ts deleted file mode 100644 index 08024b0..0000000 --- a/src/cdp/event-queue.ts +++ /dev/null @@ -1,38 +0,0 @@ -import type { CdpEvent } from "./types"; - -export type EventQueue = { - readonly push: (e: CdpEvent) => void; - readonly end: () => void; - readonly iter: AsyncIterable<CdpEvent>; -}; - -export const makeEventQueue = (): EventQueue => { - const buf: CdpEvent[] = []; - const waiters: Array<(v: IteratorResult<CdpEvent, undefined>) => void> = []; - let ended = false; - return { - push(e) { - if (ended) return; - const w = waiters.shift(); - if (w) w({ value: e, done: false }); - else buf.push(e); - }, - end() { - ended = true; - for (const w of waiters.splice(0)) w({ value: undefined, done: true }); - }, - iter: { - [Symbol.asyncIterator](): AsyncIterator<CdpEvent, undefined, undefined> { - return { - next: (): Promise<IteratorResult<CdpEvent, undefined>> => - new Promise((resolve) => { - const next = buf.shift(); - if (next) resolve({ value: next, done: false }); - else if (ended) resolve({ value: undefined, done: true }); - else waiters.push(resolve); - }), - }; - }, - }, - }; -}; |
