34 lines
847 B
TypeScript
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())
|
|
}
|
|
}
|