UNPKG

@aptpod/iscp-ts

Version:

iSCP 2.0 client library for TypeScript

129 lines 4.14 kB
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