mirror of
https://github.com/jwetzell/acn-js.git
synced 2026-08-17 12:33:23 +00:00
add sdt leaving data decoding
This commit is contained in:
@@ -88,6 +88,14 @@ export type SDTJoinRefuseData = {
|
|||||||
refuseCode: number;
|
refuseCode: number;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export type SDTLeavingData = {
|
||||||
|
leaderComponentID: string;
|
||||||
|
channelNumber: number;
|
||||||
|
memberID: number;
|
||||||
|
reliableSequenceNumber: number;
|
||||||
|
reasonCode: number;
|
||||||
|
};
|
||||||
|
|
||||||
export type SDTWrapperData = {
|
export type SDTWrapperData = {
|
||||||
channelNumber: number;
|
channelNumber: number;
|
||||||
totalSequenceNumber: number;
|
totalSequenceNumber: number;
|
||||||
@@ -106,7 +114,7 @@ export type SDTAckData = {
|
|||||||
export type SessionDataTransportPDU = {
|
export type SessionDataTransportPDU = {
|
||||||
vector: SessionDataTransportVectors;
|
vector: SessionDataTransportVectors;
|
||||||
// TODO(jwetzell): cleanup these types
|
// TODO(jwetzell): cleanup these types
|
||||||
data: SDTJoinData | SDTJoinAcceptData | SDTJoinRefuseData | SDTWrapperData | SDTAckData | Uint8Array;
|
data: SDTJoinData | SDTJoinAcceptData | SDTJoinRefuseData | SDTWrapperData | SDTAckData | SDTLeavingData| Uint8Array;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type SDTClientBlock = {
|
export type SDTClientBlock = {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Protocols, SDTAckData, SDTJoinAcceptData, SDTJoinData, SDTJoinRefuseData, SDTWrapperData, SessionDataTransportPDU, SessionDataTransportVectors, TransportLayerAddress } from '../models';
|
import { Protocols, SDTAckData, SDTJoinAcceptData, SDTJoinData, SDTJoinRefuseData, SDTLeavingData, SDTWrapperData, SessionDataTransportPDU, SessionDataTransportVectors, TransportLayerAddress } from '../models';
|
||||||
import { toHex } from '../utils';
|
import { toHex } from '../utils';
|
||||||
|
|
||||||
// TODO(jwetzell): work out flag inheritance, will need previous PDU
|
// TODO(jwetzell): work out flag inheritance, will need previous PDU
|
||||||
@@ -114,7 +114,7 @@ function decodeClientBlock(bytes: Uint8Array) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function decodeData(vector: SessionDataTransportVectors, bytes: Uint8Array): SDTJoinData | SDTJoinAcceptData | SDTJoinRefuseData | SDTWrapperData | SDTAckData | Uint8Array {
|
function decodeData(vector: SessionDataTransportVectors, bytes: Uint8Array): SDTJoinData | SDTJoinAcceptData | SDTJoinRefuseData | SDTWrapperData | SDTAckData | SDTLeavingData | Uint8Array {
|
||||||
const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength)
|
const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength)
|
||||||
switch (vector) {
|
switch (vector) {
|
||||||
case SessionDataTransportVectors.JOIN: {
|
case SessionDataTransportVectors.JOIN: {
|
||||||
@@ -190,6 +190,15 @@ function decodeData(vector: SessionDataTransportVectors, bytes: Uint8Array): SDT
|
|||||||
reliableSequenceNumber: view.getUint32(0),
|
reliableSequenceNumber: view.getUint32(0),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
case SessionDataTransportVectors.LEAVING: {
|
||||||
|
return {
|
||||||
|
leaderComponentID: toHex(bytes.subarray(0, 16)),
|
||||||
|
channelNumber: view.getUint16(16),
|
||||||
|
memberID: view.getUint16(18),
|
||||||
|
reliableSequenceNumber: view.getUint32(20),
|
||||||
|
reasonCode: view.getUint8(24),
|
||||||
|
};
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
console.error(`unhandled SDT vector: ${vector}`);
|
console.error(`unhandled SDT vector: ${vector}`);
|
||||||
return bytes;
|
return bytes;
|
||||||
|
|||||||
Reference in New Issue
Block a user