Files
welshman/packages/net/src/Pool.ts
T
2024-11-05 16:09:55 -08:00

43 lines
795 B
TypeScript

import {Emitter} from '@welshman/lib'
import {Connection} from "./Connection"
export class Pool extends Emitter {
data: Map<string, Connection>
constructor() {
super()
this.data = new Map()
}
has(url: string) {
return this.data.has(url)
}
get(url: string): Connection {
const oldConnection = this.data.get(url)
if (oldConnection) {
return oldConnection
}
const newConnection = new Connection(url)
this.data.set(url, newConnection)
this.emit('init', newConnection)
return newConnection
}
remove(url: string) {
const connection = this.data.get(url)
if (connection) {
connection.close()
this.data.delete(url)
}
}
clear() {
for (const url of this.data.keys()) {
this.remove(url)
}
}
}