const b4a = require('b4a')
module.exports = class ActiveWriters {
constructor () {
this.map = new Map()
}
get size () {
return this.map.size
}
[Symbol.iterator] () {
return this.map.values()
}
get (key) {
return this.map.get(b4a.toString(key, 'hex')) || null
}
has (key) {
return this.get(key) !== null
}
add (writer) {
this.map.set(b4a.toString(writer.core.key, 'hex'), writer)
}
delete (writer) {
this.map.delete(b4a.toString(writer.core.key, 'hex'))
}
updateActivity () {
for (const w of this.map.values()) w.updateActivity()
}
clear () {
const p = []
for (const w of this.map.values()) p.push(w.close())
this.map.clear()
return Promise.all(p)
}
}