import { ConnectionPool } from "@smithy/types"; import { ClientHttp2Session } from "http2"; export class NodeHttp2ConnectionPool implements ConnectionPool { private sessions: ClientHttp2Session[] = []; constructor(sessions?: ClientHttp2Session[]) { this.sessions = sessions ?? []; } public poll(): ClientHttp2Session | void { if (this.sessions.length > 0) { return this.sessions.shift(); } } public offerLast(session: ClientHttp2Session): void { this.sessions.push(session); } public contains(session: ClientHttp2Session): boolean { return this.sessions.includes(session); } public remove(session: ClientHttp2Session): void { this.sessions = this.sessions.filter((s) => s !== session); } public [Symbol.iterator]() { return this.sessions[Symbol.iterator](); } public destroy(connection: ClientHttp2Session): void { for (const session of this.sessions) { if (session === connection) { if (!session.destroyed) { session.destroy(); } } } } }