@uyu423/pinpoint-node-agent
Version:
Pinpoint node agent provided by NAVER (Personalized version)
45 lines (37 loc) • 1.11 kB
JavaScript
/**
* Pinpoint Node.js Agent
* Copyright 2020-present NAVER Corp.
* Apache License v2.0
*/
'use strict'
const StreamChannel = require('./stream-channel')
class StreamChannelManger {
constructor(dataSender) {
this.streamChannels = new Map()
this.dataSender = dataSender
}
add (newStreamChannel) {
if (this.streamChannels.has(newStreamChannel.id)) {
const streamChannel = this.streamChannels.get(newStreamChannel.id)
if (streamChannel === newStreamChannel || streamChannel.isOpen()) {
return newStreamChannel
}
this.remove(streamChannel)
}
this.streamChannels.set(newStreamChannel.id, newStreamChannel)
return newStreamChannel
}
remove (streamChannelId) {
const streamChannel = this.streamChannels.get(streamChannelId)
if (streamChannel) {
streamChannel.setClosed()
this.streamChannels.delete(streamChannelId)
}
return streamChannel
}
getOpenChannels () {
return Array.from(this.streamChannels.values())
.filter(streamChannel => streamChannel.isOpen())
}
}
module.exports = StreamChannelManger