xiot-core-spec-ts
Version:
XIOT Specification Codec
59 lines (58 loc) • 2.29 kB
JavaScript
;
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;