'use strict'; const Namespace = require('./namespace'); let count = 0; class ParentNamespace extends Namespace { constructor(server) { super(server, '/_' + (count++)); this.children = new Set(); } initAdapter() {} emit() { const args = Array.prototype.slice.call(arguments); this.children.forEach(nsp => { nsp.rooms = this.rooms; nsp.flags = this.flags; nsp.emit.apply(nsp, args); }); this.rooms = []; this.flags = {}; } createChild(name) { const namespace = new Namespace(this.server, name); namespace.fns = this.fns.slice(0); this.listeners('connect').forEach(listener => namespace.on('connect', listener)); this.listeners('connection').forEach(listener => namespace.on('connection', listener)); this.children.add(namespace); this.server.nsps[name] = namespace; return namespace; } } module.exports = ParentNamespace;