UNPKG

@hms-networks/kolibri-js-core

Version:

Kolibri Core library containing common kolibri models and utils

52 lines 1.94 kB
"use strict"; /* * Copyright 2021 HMS Industrial Networks AB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http: //www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.OpcodeDecoder = void 0; const constant_1 = require("../../common/constant"); const errorcode_1 = require("../../common/errorcode"); class OpcodeDecoder { constructor(opcodes, opcodeCompatMapper) { this.opcodes = opcodes; this.opcodeCompatMapper = opcodeCompatMapper; this.opcodesMap = new Map(); this.opcodes.forEach((opcode) => { this.opcodesMap.set(opcode.getCode(), opcode); }); } getOpcode(code) { const opcode = this.opcodesMap.get(code); if (!opcode) { throw new errorcode_1.KolibriError(errorcode_1.errorcode.INVALID_OPCODE); } return opcode; } getNameFromOpcode(opcode) { return this.getOpcode(opcode).getName(); } decode(buffer) { const opcode = this.getOpcode(buffer[0]); const kpo = opcode.decode(buffer); return this.opcodeCompatMapper.map(kpo, constant_1.constants.INCOMING_DIRECTION); } encode(kpo) { const opcode = this.getOpcode(kpo.opcode); let compatKpo = this.opcodeCompatMapper.map(kpo, constant_1.constants.OUTGOING_DIRECTION); return opcode.encode(compatKpo); } } exports.OpcodeDecoder = OpcodeDecoder; //# sourceMappingURL=opcode_decoder.js.map