xiot-core-spec-ts
Version:
XIOT Specification Codec
85 lines (84 loc) • 3.57 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ActionOperationCodec = exports.ActionOperationCodecResult = exports.ActionOperationCodecQuery = void 0;
const ActionOperation_1 = require("../../typedef/operation/ActionOperation");
const AbstractOperationCodec_1 = require("./AbstractOperationCodec");
const ActionID_1 = require("../../typedef/xid/ActionID");
const Spec_1 = require("../../typedef/constant/Spec");
const ArgumentOperationCodec_1 = require("./ArgumentOperationCodec");
class ActionOperationCodecQuery extends AbstractOperationCodec_1.AbstractOperationCodec {
decodeObject(o) {
const action = new ActionOperation_1.ActionOperation();
action.aid = ActionID_1.ActionID.parse(o[Spec_1.Spec.AID]);
if (o[Spec_1.Spec.IN] != null) {
if (o[Spec_1.Spec.IN] instanceof Array) {
action.setArgumentsIn(ArgumentOperationCodec_1.ArgumentOperationCodec.decodeArray(o[Spec_1.Spec.IN]));
}
else {
action.argumentsCompact = true;
action.setArgumentsIn(ArgumentOperationCodec_1.ArgumentOperationCodec.decodeObjet(o[Spec_1.Spec.IN]));
}
}
return action;
}
encodeObject(action) {
const object = {
aid: action.aid.toString()
};
if (action.oid !== '') {
object[Spec_1.Spec.OID] = action.oid;
}
if (action.in.size > 0) {
object[Spec_1.Spec.IN] = ArgumentOperationCodec_1.ArgumentOperationCodec.encodeArray(action.argumentsCompact, action.getArgumentsIn());
}
return object;
}
}
exports.ActionOperationCodecQuery = ActionOperationCodecQuery;
class ActionOperationCodecResult extends AbstractOperationCodec_1.AbstractOperationCodec {
decodeObject(o) {
const action = new ActionOperation_1.ActionOperation();
action.aid = ActionID_1.ActionID.parse(o[Spec_1.Spec.AID]);
action.oid = o[Spec_1.Spec.OID] || '';
action.status = o[Spec_1.Spec.STATUS];
if (action.status === 0) {
if (o[Spec_1.Spec.OUT] != null) {
if (o[Spec_1.Spec.OUT] instanceof Array) {
action.setArgumentsOut(ArgumentOperationCodec_1.ArgumentOperationCodec.decodeArray(o[Spec_1.Spec.OUT]));
}
else {
action.argumentsCompact = true;
action.setArgumentsOut(ArgumentOperationCodec_1.ArgumentOperationCodec.decodeObjet(o[Spec_1.Spec.OUT]));
}
}
}
else {
action.description = o[Spec_1.Spec.DESCRIPTION];
}
return action;
}
encodeObject(action) {
const object = {
aid: action.aid.toString(),
status: action.status
};
if (action.oid !== '') {
object[Spec_1.Spec.OID] = action.oid;
}
if (action.status === 0) {
if (action.out.size > 0) {
object[Spec_1.Spec.OUT] = ArgumentOperationCodec_1.ArgumentOperationCodec.encodeArray(action.argumentsCompact, action.getArgumentsOut());
}
}
else {
object[Spec_1.Spec.DESCRIPTION] = action.description;
}
return object;
}
}
exports.ActionOperationCodecResult = ActionOperationCodecResult;
class ActionOperationCodec {
}
exports.ActionOperationCodec = ActionOperationCodec;
ActionOperationCodec.Query = new ActionOperationCodecQuery();
ActionOperationCodec.Result = new ActionOperationCodecResult();