@aptpod/iscp-ts
Version:
iSCP 2.0 client library for TypeScript
129 lines • 4.14 kB
JavaScript
import { ISCPMalformedMessageError } from '../../exceptions/exceptions';
import { QOS, DataPoint, DataId, DataPointGroup, DataFilter, DownstreamFilter, StreamChunk, } from '../../message';
import { QoS as QoSPB, } from '../codegen/common';
export class WireToProto {
static qos(wire) {
switch (wire) {
case QOS.UNRELIABLE:
return QoSPB.UNRELIABLE;
case QOS.RELIABLE:
return QoSPB.RELIABLE;
case QOS.PARTIAL:
return QoSPB.PARTIAL;
default:
throw new ISCPMalformedMessageError('Unrecognized qos.');
}
}
static dataPoint(wire) {
return {
elapsedTime: wire.elapsedTime,
payload: wire.payload.slice(),
};
}
static dataId(wire) {
return {
name: wire.name,
type: wire.type,
};
}
static dataIdOrAlias(wire) {
if (wire instanceof DataId) {
return {
oneofKind: 'dataId',
dataId: WireToProto.dataId(wire),
};
}
else if (typeof wire === 'number') {
return {
oneofKind: 'dataIdAlias',
dataIdAlias: wire,
};
}
throw new ISCPMalformedMessageError('Unrecognized dataIdOrAlias.');
}
static dataPointGroup(wire) {
return {
dataIdOrAlias: WireToProto.dataIdOrAlias(wire.dataIdOrAlias),
dataPoints: wire.dataPoints.map((dataPoint) => WireToProto.dataPoint(dataPoint)),
};
}
static dataFilter(wire) {
return {
name: wire.name,
type: wire.type,
};
}
static downstreamFilter(wire) {
return {
sourceNodeId: wire.sourceNodeId,
dataFilters: wire.dataFilters.map((dataFilter) => WireToProto.dataFilter(dataFilter)),
};
}
static streamChunk(wire) {
return {
sequenceNumber: wire.sequenceNumber,
dataPointGroups: wire.dataPointGroups.map((dataPointGroup) => WireToProto.dataPointGroup(dataPointGroup)),
};
}
}
export class ProtoToWire {
static qos(proto) {
switch (proto) {
case QoSPB.UNRELIABLE:
return QOS.UNRELIABLE;
case QoSPB.RELIABLE:
return QOS.RELIABLE;
case QoSPB.PARTIAL:
return QOS.PARTIAL;
default:
throw new ISCPMalformedMessageError('Unrecognized qos.');
}
}
static dataPoint(proto) {
return new DataPoint({
elapsedTime: proto.elapsedTime,
payload: proto.payload.slice(),
});
}
static dataId(proto) {
return new DataId({
name: proto.name,
type: proto.type,
});
}
static dataIdOrAlias(proto) {
switch (proto.oneofKind) {
case 'dataId':
return ProtoToWire.dataId(proto.dataId);
case 'dataIdAlias':
return proto.dataIdAlias;
default:
throw new ISCPMalformedMessageError('Unrecognized dataIdOrAlias.');
}
}
static dataPointGroup(proto) {
return new DataPointGroup({
dataIdOrAlias: ProtoToWire.dataIdOrAlias(proto.dataIdOrAlias),
dataPoints: proto.dataPoints.map((dataPoint) => ProtoToWire.dataPoint(dataPoint)),
});
}
static dataFilter(proto) {
return new DataFilter({
name: proto.name,
type: proto.type,
});
}
static downstreamFilter(proto) {
return new DownstreamFilter({
sourceNodeId: proto.sourceNodeId,
dataFilters: proto.dataFilters.map((dataFilter) => ProtoToWire.dataFilter(dataFilter)),
});
}
static streamChunk(proto) {
return new StreamChunk({
sequenceNumber: proto.sequenceNumber,
dataPointGroups: proto.dataPointGroups.map((dataPointGroup) => ProtoToWire.dataPointGroup(dataPointGroup)),
});
}
}
//# sourceMappingURL=common.js.map