gamesocket.io
Version:
Simple event-oriented API for uWebSocket.js
63 lines (62 loc) • 1.72 kB
JavaScript
'use strict'
var __importDefault =
(this && this.__importDefault) ||
function (mod) {
return mod && mod.__esModule ? mod : { default: mod }
}
Object.defineProperty(exports, '__esModule', { value: true })
exports.NmspManager = void 0
const io_1 = require('../io')
const List_1 = require('../SocketList/List')
const Logger_1 = __importDefault(require('../Logger/Logger'))
class NamespaceList extends List_1.List {
set(nmsp) {
if (this.has(nmsp.name)) return
super.addOne(nmsp)
}
get(nmsp) {
for (let i = 0; i < this._elements?.length; i++) {
if (this._elements[i]?.name == nmsp) return this._elements[i]
}
return undefined
}
has(nmsp) {
for (let i = 0; i < this._elements?.length; i++) {
if (this._elements[i]?.name == nmsp) return true
}
return false
}
}
class NmspManager {
static _spaces = new NamespaceList()
static _managers = new Map()
static get(name) {
let space
if (name.startsWith('/')) name = name.split('/')[1]
if (!this.has(name)) {
if (Logger_1.default.flags.debug) Logger_1.default.debug(`Created namespace: "${name}"`)
let manager = new io_1.EventManager(name)
space = new io_1.Namespace(name, manager)
this.setManager(name, manager)
this.setNamespace(space)
return space
}
return this._spaces.get(name)
}
static get managers() {
return this._managers
}
static get spaces() {
return this._spaces.values()
}
static has(name) {
return this._spaces.has(name)
}
static setManager(name, manager) {
return this._managers.set(name, manager)
}
static setNamespace(nmsp) {
return this._spaces.set(nmsp)
}
}
exports.NmspManager = NmspManager