rxprotoplex-peers
Version:
A reactive peer-to-peer management library built on RxJS and Protoplex for efficient signaling, matchmaking, and multiplexing.
29 lines (28 loc) • 1.01 kB
JavaScript
const createPortPool = (start = 1024, end = 65535) => {
const availablePorts = new Set(Array.from({ length: end - start + 1 }, (_, i) => start + i));
return {
allocate: () => {
if (availablePorts.size === 0) throw new Error("No available ports.");
const port = availablePorts.values().next().value;
availablePorts.delete(port);
return port;
},
release: (port) => {
if (port < start || port > end) throw new Error("Invalid port.");
availablePorts.add(port);
},
available: () => Array.from(availablePorts),
count: () => availablePorts.size,
take(port = 0) {
if (port === 0) {
return this.allocate();
}
if (!availablePorts.has(port)) {
throw new Error(`Port ${port} is already in use`);
}
availablePorts.delete(port);
return port;
}
};
};
export {createPortPool}