UNPKG

xiot-core-spec-ts

Version:
59 lines (58 loc) 2.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Event_1 = require("../../typedef/instance/Event"); const Spec_1 = require("../../typedef/constant/Spec"); const EventType_1 = require("../../typedef/definition/urn/EventType"); const ArgumentCodec_1 = require("./ArgumentCodec"); const DescriptionCodec_1 = require("../definition/DescriptionCodec"); class EventCodec { static decodeArray(array) { const list = []; if (array != null) { for (const o of array) { // const iid = o[Spec.IID]; // const type = new EventType(o[Spec.TYPE]); // const description = DescriptionCodec.decode(o[Spec.DESCRIPTION]); // const a = ArgumentCodec.decodeArray(o[Spec.ARGUMENTS]); // if (o[Spec.X_OPTIONAL] != null) { // type._optional = o[Spec.X_OPTIONAL]; // } // list.push(new Event(iid, type, description, a)); list.push(EventCodec.decode(o)); } } return list; } static decode(o) { const iid = o[Spec_1.Spec.IID]; const type = new EventType_1.EventType(o[Spec_1.Spec.TYPE]); const description = DescriptionCodec_1.DescriptionCodec.decode(o[Spec_1.Spec.DESCRIPTION]); const a = ArgumentCodec_1.ArgumentCodec.decodeArray(o[Spec_1.Spec.ARGUMENTS]); // if (o[Spec.X_OPTIONAL] != null) { // type._optional = o[Spec.X_OPTIONAL]; // } return new Event_1.Event(iid, type, description, a); } static encode(event) { const o = { iid: event.iid, type: event.type.toString(), description: DescriptionCodec_1.DescriptionCodec.encode(event.description), }; if (event.arguments.size > 0) { o[Spec_1.Spec.ARGUMENTS] = ArgumentCodec_1.ArgumentCodec.encodeArray(event.getArguments()); } // if (event.type._optional) { // o[Spec.X_OPTIONAL] = true; // } return o; } static encodeArray(events) { const array = []; events.forEach((event) => { array.push(EventCodec.encode(event)); }); return array; } } exports.EventCodec = EventCodec;