avocado-old/packages/net/packet/registry.js
2020-06-12 16:27:35 -05:00

21 lines
570 B
JavaScript

let eventId = 0;
const idToPacketMap = new Map();
const keytoIdMap = new Map();
const packetToIdMap = new Map();
export function allPackets() {
return Array.from(idToPacketMap.values());
}
export function idFromPacket(Packet) {
return packetToIdMap.get(Packet);
}
export function packetFromId(id) {
return idToPacketMap.get(id);
}
export function registerPacket({default: Packet}, key) {
const id = keytoIdMap.has(key) ? keytoIdMap.get(key) : eventId++;
idToPacketMap.set(id, Packet);
keytoIdMap.set(key, id);
packetToIdMap.set(Packet, id);
return id;
}