Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | 7x 7x 7x 7x 7x 7x 7x | import { ProxyURLBrand } from "@/brands/proxyURL";
import { ProxyAgent } from "undici";
class ProxyAgentPool {
private proxyURLToAgent: Map<string, ProxyAgent>;
constructor() {
this.proxyURLToAgent = new Map<string, ProxyAgent>();
}
get(proxyURL: ProxyURLBrand) {
const proxyAgent = this.proxyURLToAgent.get(proxyURL);
Iif (proxyAgent) {
return proxyAgent;
}
const newProxyAgent = new ProxyAgent({
uri: proxyURL,
connections: 20,
keepAliveTimeout: 172_800_000 /* 2 days */,
});
this.proxyURLToAgent.set(proxyURL, newProxyAgent);
return newProxyAgent;
}
async close(proxyURL: ProxyURLBrand) {
const proxyAgent = this.proxyURLToAgent.get(proxyURL);
if (!proxyAgent) {
return;
}
await proxyAgent.close();
this.proxyURLToAgent.delete(proxyURL);
}
async closeAll() {
await Promise.all([...this.proxyURLToAgent.values()].map((proxyAgent) => proxyAgent.close()));
this.proxyURLToAgent.clear();
}
}
export const proxyAgentPool = new ProxyAgentPool();
|