xiot-core-spec-ts
Version:
XIOT Specification Codec
105 lines (104 loc) • 3.54 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const ActionOperation_1 = require("../../typedef/operation/ActionOperation");
const AID_1 = require("../../typedef/xid/AID");
const Spec_1 = require("../../typedef/constant/Spec");
const ArgumentOperationCodec_1 = require("./ArgumentOperationCodec");
class ActionOperationCodec {
/**
* query
*/
static decodeQuery(query) {
if (query != null) {
return ActionOperationCodec.decodeQueryArray(query['actions']);
}
return [];
}
static decodeQueryArray(array) {
if (array != null) {
return array.map(x => ActionOperationCodec.decodeOneQuery(x));
}
return [];
}
static decodeOneQuery(query) {
const o = new ActionOperation_1.ActionOperation();
o.aid = AID_1.AID.parseString(query[Spec_1.Spec.AID]);
o.setArgumentsIn(ArgumentOperationCodec_1.ArgumentOperationCodec.decodeArray(query[Spec_1.Spec.IN]));
return o;
}
static encodeQuery(actions) {
return {
actions: ActionOperationCodec.encodeQueryArray(actions)
};
}
static encodeQueryArray(actions) {
return actions.map(x => ActionOperationCodec.encodeOneQuery(x));
}
static encodeOneQuery(action) {
const object = {
aid: action.aid != null ? 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.getArgumentsIn());
}
return object;
}
/**
* result
*/
static decodeResult(result) {
if (result != null) {
return ActionOperationCodec.decodeResultArray(result['actions']);
}
return [];
}
static decodeResultArray(array) {
if (array != null) {
return array.map(x => ActionOperationCodec.decodeOneResult(x));
}
return [];
}
static decodeOneResult(result) {
const o = new ActionOperation_1.ActionOperation();
o.aid = AID_1.AID.parseString(result[Spec_1.Spec.AID]);
o.oid = result[Spec_1.Spec.OID] || '';
o.status = result[Spec_1.Spec.STATUS];
if (o.status === 0) {
o.setArgumentsOut(ArgumentOperationCodec_1.ArgumentOperationCodec.decodeArray(result[Spec_1.Spec.OUT]));
}
else {
o.description = result[Spec_1.Spec.DESCRIPTION];
}
return o;
}
static encodeResult(actions) {
return {
actions: ActionOperationCodec.encodeResultArray(actions)
};
}
static encodeResultArray(actions) {
return actions.map(x => ActionOperationCodec.encodeOneResult(x));
}
static encodeOneResult(action) {
const object = {
aid: action.aid != null ? 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.getArgumentsOut());
}
}
else {
object[Spec_1.Spec.DESCRIPTION] = action.description;
}
return object;
}
}
exports.ActionOperationCodec = ActionOperationCodec;