xiot-core-spec-ts
Version:
XIOT Specification Codec
48 lines (47 loc) • 1.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.OwnerRuleExecutedCodec = void 0;
const OwnerRuleExecuted_1 = require("../../../typedef/notice/owner/impl/OwnerRuleExecuted");
const OperationParser_1 = require("../../../typedef/rule/parser/operation/OperationParser");
class OwnerRuleExecutedCodec {
static encode(x) {
const operations = [x.operations.length];
for (let i = 0; i < x.operations.length; i++) {
operations[i] = {
operation: x.operations[i].toString(),
status: x.operations[i].status
};
if (x.operations[i].status !== 0) {
operations[i].description = x.operations[i].description;
}
}
return {
appId: x.appId,
ownerId: x.ownerId,
ruleId: x.ruleId,
operations: operations,
timestamp: x.timestamp
};
}
static decode(x) {
const timestamp = x.timestamp | 0;
const appId = x.appId;
const ownerId = x.ownerId;
const userId = x.userId;
const ruleId = x.ruleId;
const operations = [x.operations.length];
if (x.operations instanceof Array) {
const parser = new OperationParser_1.OperationParser();
for (let i = 0; i < x.operations.length; i++) {
const list = parser.parseExpression(x.operations[i].operation);
if (list.length === 1) {
operations[i] = list[0];
operations[i].status = x.operations[i].status;
operations[i].description = x.operations[i].description;
}
}
}
return new OwnerRuleExecuted_1.OwnerRuleExecuted(timestamp, appId, ownerId, userId, ruleId, operations);
}
}
exports.OwnerRuleExecutedCodec = OwnerRuleExecutedCodec;