xiot-core-spec-ts
Version:
XIOT Specification Codec
152 lines (151 loc) • 6.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PropertyOperationCodec = exports.PropertyOperationCodecSet = exports.PropertyOperationCodecGet = exports.PropertyOperationCodecSetResult = exports.PropertyOperationCodecSetQuery = exports.PropertyOperationCodecGetResult = exports.PropertyOperationCodecGetQuery = void 0;
const Spec_1 = require("../../typedef/constant/Spec");
const AbstractOperationCodec_1 = require("./AbstractOperationCodec");
const PropertyOperation_1 = require("../../typedef/operation/PropertyOperation");
const PropertyID_1 = require("../../typedef/xid/PropertyID");
const CombinationValueCodec_1 = require("./CombinationValueCodec");
class PropertyOperationCodecGetQuery extends AbstractOperationCodec_1.AbstractOperationCodec {
decodeObject(o) {
if (typeof o === 'string') {
const property = new PropertyOperation_1.PropertyOperation();
property.pid = PropertyID_1.PropertyID.parse(o);
return property;
}
throw Error(`invalid pid: ${o}`);
}
encodeObject(t) {
return t.pid.toString();
}
}
exports.PropertyOperationCodecGetQuery = PropertyOperationCodecGetQuery;
class PropertyOperationCodecGetResult extends AbstractOperationCodec_1.AbstractOperationCodec {
decodeObject(o) {
const property = new PropertyOperation_1.PropertyOperation();
property.pid = PropertyID_1.PropertyID.parse(o[Spec_1.Spec.PID]);
property.status = o[Spec_1.Spec.STATUS];
if (property.status === undefined) {
property.status = 0;
}
if (property.status == null) {
property.status = 0;
}
if (property.status === 0) {
const value = o[Spec_1.Spec.VALUE];
if (value instanceof Array) {
property.value = CombinationValueCodec_1.CombinationValueCodec.decodeArray(value);
}
else if (typeof value === 'object') {
property.argumentsCompact = true;
property.value = CombinationValueCodec_1.CombinationValueCodec.decodeObject(value);
}
else {
property.value = value;
}
}
else {
property.description = o[Spec_1.Spec.DESCRIPTION];
}
return property;
}
encodeObject(property) {
const o = {
pid: property.pid.toString()
};
if (property.status === 0) {
if (property.value instanceof Map) {
o[Spec_1.Spec.VALUE] = CombinationValueCodec_1.CombinationValueCodec.encodeWithCompact(property.argumentsCompact, property.value);
}
else {
o[Spec_1.Spec.VALUE] = property.value;
}
}
else {
o[Spec_1.Spec.STATUS] = property.status;
o[Spec_1.Spec.DESCRIPTION] = property.description;
}
return o;
}
}
exports.PropertyOperationCodecGetResult = PropertyOperationCodecGetResult;
class PropertyOperationCodecSetQuery extends AbstractOperationCodec_1.AbstractOperationCodec {
decodeObject(o) {
const property = new PropertyOperation_1.PropertyOperation();
const value = o[Spec_1.Spec.VALUE];
property.pid = PropertyID_1.PropertyID.parse(o[Spec_1.Spec.PID]);
if (value !== null) {
if (value instanceof Array) {
property.value = CombinationValueCodec_1.CombinationValueCodec.decodeArray(value);
}
else if (typeof value === 'object') {
property.argumentsCompact = true;
property.value = CombinationValueCodec_1.CombinationValueCodec.decodeObject(value);
}
else {
property.value = value;
}
}
return property;
}
encodeObject(property) {
return {
pid: property.pid.toString(),
value: property.value instanceof Map
? CombinationValueCodec_1.CombinationValueCodec.encodeWithCompact(property.argumentsCompact, property.value)
: property.value
};
}
}
exports.PropertyOperationCodecSetQuery = PropertyOperationCodecSetQuery;
class PropertyOperationCodecSetResult extends AbstractOperationCodec_1.AbstractOperationCodec {
decodeObject(o) {
const property = new PropertyOperation_1.PropertyOperation();
property.pid = PropertyID_1.PropertyID.parse(o[Spec_1.Spec.PID]);
property.status = o[Spec_1.Spec.STATUS];
if (property.status === undefined) {
property.status = 0;
}
if (property.status == null) {
property.status = 0;
}
if (property.status !== 0) {
property.description = o[Spec_1.Spec.DESCRIPTION];
}
// if (property.description === undefined) {
// throw new Error('description undefined');
// }
return property;
}
encodeObject(property) {
const o = {
pid: property.pid.toString(),
status: property.status
};
if (property.status !== 0) {
o[Spec_1.Spec.DESCRIPTION] = property.description;
}
return o;
}
}
exports.PropertyOperationCodecSetResult = PropertyOperationCodecSetResult;
class PropertyOperationCodecGet {
constructor() {
this.QUERY = new PropertyOperationCodecGetQuery();
this.RESULT = new PropertyOperationCodecGetResult();
}
}
exports.PropertyOperationCodecGet = PropertyOperationCodecGet;
class PropertyOperationCodecSet {
constructor() {
this.QUERY = new PropertyOperationCodecSetQuery();
this.RESULT = new PropertyOperationCodecSetResult();
}
}
exports.PropertyOperationCodecSet = PropertyOperationCodecSet;
class PropertyOperationCodec {
}
exports.PropertyOperationCodec = PropertyOperationCodec;
PropertyOperationCodec.Get = new PropertyOperationCodecGet();
PropertyOperationCodec.Set = new PropertyOperationCodecSet();
PropertyOperationCodec.Notify = new PropertyOperationCodecSetQuery();