Files
chad/server/plugins/socket/webrtc/ChannelManager.ts

34 lines
847 B
TypeScript

import type { Router } from 'mediasoup/types'
import type { Channel as DbChannel } from '../../../prisma/generated-client/client.ts'
import { Channel } from './Channel.ts'
export class ChannelManager {
private channels = new Map<string, Channel>()
private mediasoupRouter: Router
constructor(mediasoupRouter: Router) {
this.mediasoupRouter = mediasoupRouter
}
async create(newChannel: Channel | DbChannel) {
if (newChannel instanceof Channel) {
this.channels.set(newChannel.id, newChannel)
}
else {
this.channels.set(newChannel.id, await Channel.create(newChannel.id, newChannel.persistent, this.mediasoupRouter))
}
}
get(id: string) {
return this.channels.get(id)
}
delete(id: string) {
this.channels.delete(id)
}
get all() {
return Array.from(this.channels.values())
}
}