gamesocket.io
Version:
Simple event-oriented API for uWebSocket.js
73 lines (72 loc) • 1.99 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.EventEscort = exports.EventManager = void 0
const Logger_js_1 = __importDefault(require('../Logger/Logger.js'))
class EventManager {
namespace
_escorts = new Map()
_events = new Array()
constructor(namespace) {
this.namespace = namespace
}
spawn(event, callback) {
if (Logger_js_1.default.flags.debug)
Logger_js_1.default.debug(
`${this.namespace}(EventManager): spawning handler escort "${event}". \nCallback is ${callback}`,
)
let escort = new EventEscort('_', event, callback)
this._escorts.set(event, escort)
this._events.push(event)
return escort
}
get(entity) {
if (typeof entity == 'string') return this._escorts.get(entity)
else return this._escorts.get(entity.event)
}
drop(entity) {
if (typeof entity == 'string') return this._escorts.delete(entity)
else return this._escorts.delete(entity.event)
}
get pool() {
return this._escorts
}
get events() {
return this._events
}
}
exports.EventManager = EventManager
class EventEscort {
_id
_event
_handler
constructor(_id, _event, callback) {
this._id = _id
this._event = _event
if (!callback)
this._handler = function (escort) {
Logger_js_1.default.fatal(`Unsetted function on event '${this.name}'`)
}.bind({ id: this._id, name: this._event })
else this._handler = callback.bind({ id: this._id, name: this._event })
}
execute(escort) {
this._handler.call({ id: this._id, name: this._event }, escort)
}
get used() {
return this._handler
}
set used(callback) {
this._handler = callback.bind({ id: this._id, name: this._event })
}
get id() {
return this._id
}
get event() {
return this._event
}
}
exports.EventEscort = EventEscort