@aptpod/iscp-ts
Version:
iSCP 2.0 client library for TypeScript
320 lines • 11.6 kB
JavaScript
import { ISCPMalformedMessageError } from '../../exceptions';
import { DownstreamChunkAck, DownstreamChunkAckExtensionFields, DownstreamChunkResult, DownstreamChunkResultExtensionFields, UpstreamInfo, DataId, RESULT_CODE, } from '../../message';
import { ResultCode as ResultCodePb } from '../codegen/result_code';
const WIRE_DOWNSTREAM_CHUNK_ACK = new DownstreamChunkAck({
streamIdAlias: 1234,
ackId: 4567,
results: [
new DownstreamChunkResult({
streamIdOfUpstream: '01020304-0506-4708-890a-111213141516',
sequenceNumberInUpstream: 9990,
resultCode: RESULT_CODE.SUCCEEDED,
resultString: 'result-9990',
extensionFields: undefined,
}),
new DownstreamChunkResult({
streamIdOfUpstream: '11223344-0506-4708-890a-111213141516',
sequenceNumberInUpstream: 9991,
resultCode: RESULT_CODE.SUCCEEDED,
resultString: 'result-9991',
extensionFields: undefined,
}),
],
upstreamAliases: {
100: new UpstreamInfo({
sessionId: 'sessionId-100',
streamId: '55667788-0506-4708-890a-111213141516',
sourceNodeId: 'sourceNodeId-100',
}),
200: new UpstreamInfo({
sessionId: 'sessionId-200',
streamId: 'aabbccdd-0506-4708-890a-111213141516',
sourceNodeId: 'sourceNodeId-200',
}),
},
dataIdAliases: {
1000: new DataId({
name: 'data-1000',
type: 'type-1000',
}),
2000: new DataId({
name: 'data-2000',
type: 'type-2000',
}),
},
extensionFields: undefined,
});
const PROTO_DOWNSTREAM_CHUNK_ACK = {
streamIdAlias: 1234,
ackId: 4567,
results: [
{
streamIdOfUpstream: new Uint8Array([
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x47, 0x08, 0x89, 0x0a, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
]),
sequenceNumberInUpstream: 9990,
resultCode: ResultCodePb.SUCCEEDED,
resultString: 'result-9990',
extensionFields: undefined,
},
{
streamIdOfUpstream: new Uint8Array([
0x11, 0x22, 0x33, 0x44, 0x05, 0x06, 0x47, 0x08, 0x89, 0x0a, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
]),
sequenceNumberInUpstream: 9991,
resultCode: ResultCodePb.SUCCEEDED,
resultString: 'result-9991',
extensionFields: undefined,
},
],
upstreamAliases: {
100: {
sessionId: 'sessionId-100',
streamId: new Uint8Array([
0x55, 0x66, 0x77, 0x88, 0x05, 0x06, 0x47, 0x08, 0x89, 0x0a, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
]),
sourceNodeId: 'sourceNodeId-100',
},
200: {
sessionId: 'sessionId-200',
streamId: new Uint8Array([
0xaa, 0xbb, 0xcc, 0xdd, 0x05, 0x06, 0x47, 0x08, 0x89, 0x0a, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
]),
sourceNodeId: 'sourceNodeId-200',
},
},
dataIdAliases: {
1000: {
name: 'data-1000',
type: 'type-1000',
},
2000: {
name: 'data-2000',
type: 'type-2000',
},
},
extensionFields: undefined,
};
export const withoutExtensionFields = {
toWire: () => {
return new DownstreamChunkAck({
...WIRE_DOWNSTREAM_CHUNK_ACK,
});
},
toProto: () => {
return {
message: {
oneofKind: 'downstreamChunkAck',
downstreamChunkAck: {
...PROTO_DOWNSTREAM_CHUNK_ACK,
},
},
};
},
};
export const withExtensionFields = {
toWire: () => {
return new DownstreamChunkAck({
...WIRE_DOWNSTREAM_CHUNK_ACK,
results: [
new DownstreamChunkResult({
streamIdOfUpstream: '01020304-0506-4708-890a-111213141516',
sequenceNumberInUpstream: 9990,
resultCode: RESULT_CODE.SUCCEEDED,
resultString: 'result-9990',
extensionFields: new DownstreamChunkResultExtensionFields(),
}),
new DownstreamChunkResult({
streamIdOfUpstream: '11223344-0506-4708-890a-111213141516',
sequenceNumberInUpstream: 9991,
resultCode: RESULT_CODE.SUCCEEDED,
resultString: 'result-9991',
extensionFields: new DownstreamChunkResultExtensionFields(),
}),
],
extensionFields: new DownstreamChunkAckExtensionFields(),
});
},
toProto: () => {
return {
message: {
oneofKind: 'downstreamChunkAck',
downstreamChunkAck: {
...PROTO_DOWNSTREAM_CHUNK_ACK,
results: [
{
streamIdOfUpstream: new Uint8Array([
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x47, 0x08, 0x89, 0x0a, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
]),
sequenceNumberInUpstream: 9990,
resultCode: ResultCodePb.SUCCEEDED,
resultString: 'result-9990',
extensionFields: {},
},
{
streamIdOfUpstream: new Uint8Array([
0x11, 0x22, 0x33, 0x44, 0x05, 0x06, 0x47, 0x08, 0x89, 0x0a, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
]),
sequenceNumberInUpstream: 9991,
resultCode: ResultCodePb.SUCCEEDED,
resultString: 'result-9991',
extensionFields: {},
},
],
extensionFields: {},
},
},
};
},
};
export const invalidWire = {
resultsStreamIdOfUpstream: {
toWire: () => {
return new DownstreamChunkAck({
...WIRE_DOWNSTREAM_CHUNK_ACK,
results: [
new DownstreamChunkResult({
streamIdOfUpstream: '00010203',
sequenceNumberInUpstream: 9990,
resultCode: RESULT_CODE.SUCCEEDED,
resultString: 'result-9990',
extensionFields: undefined,
}),
],
});
},
toErrorClass: () => {
return TypeError;
},
toError: () => {
return new (invalidWire.resultsStreamIdOfUpstream.toErrorClass())('Invalid UUID');
},
},
resultsResultCode: {
toWire: () => {
return new DownstreamChunkAck({
...WIRE_DOWNSTREAM_CHUNK_ACK,
results: [
new DownstreamChunkResult({
streamIdOfUpstream: '11223344-0506-4708-890a-111213141516',
sequenceNumberInUpstream: 9990,
// @ts-ignore
resultCode: 9999,
resultString: 'result-9990',
extensionFields: undefined,
}),
],
});
},
toErrorClass: () => {
return ISCPMalformedMessageError;
},
toError: () => {
return new (invalidWire.resultsResultCode.toErrorClass())('Unrecognized resultCode.');
},
},
upstreamAliasesStreamId: {
toWire: () => {
return new DownstreamChunkAck({
...WIRE_DOWNSTREAM_CHUNK_ACK,
upstreamAliases: [
new UpstreamInfo({
sessionId: 'sessionId-100',
streamId: '00010203',
sourceNodeId: 'sourceNodeId-100',
}),
],
});
},
toErrorClass: () => {
return TypeError;
},
toError: () => {
return new (invalidWire.resultsStreamIdOfUpstream.toErrorClass())('Invalid UUID');
},
},
};
export const invalidProto = {
resultsStreamIdOfUpstream: {
toProto: () => {
return {
message: {
oneofKind: 'downstreamChunkAck',
downstreamChunkAck: {
...PROTO_DOWNSTREAM_CHUNK_ACK,
results: [
{
streamIdOfUpstream: new Uint8Array([0x00, 0x01, 0x02, 0x03]),
sequenceNumberInUpstream: 9990,
resultCode: ResultCodePb.SUCCEEDED,
resultString: 'result-9990',
extensionFields: undefined,
},
],
},
},
};
},
toErrorClass: () => {
return TypeError;
},
toError: () => {
return new (invalidProto.resultsStreamIdOfUpstream.toErrorClass())('Stringified UUID is invalid');
},
},
resultsResultCode: {
toProto: () => {
return {
message: {
oneofKind: 'downstreamChunkAck',
downstreamChunkAck: {
...PROTO_DOWNSTREAM_CHUNK_ACK,
results: [
{
streamIdOfUpstream: new Uint8Array([
0xaa, 0xbb, 0xcc, 0xdd, 0x05, 0x06, 0x47, 0x08, 0x89, 0x0a, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
]),
sequenceNumberInUpstream: 9990,
resultCode: 9999,
resultString: 'result-9990',
extensionFields: undefined,
},
],
},
},
};
},
toErrorClass: () => {
return ISCPMalformedMessageError;
},
toError: () => {
return new (invalidProto.resultsResultCode.toErrorClass())('Unrecognized resultCode.');
},
},
upstreamAliasesStreamId: {
toProto: () => {
return {
message: {
oneofKind: 'downstreamChunkAck',
downstreamChunkAck: {
...PROTO_DOWNSTREAM_CHUNK_ACK,
upstreamAliases: [
{
sessionId: 'sessionId-100',
streamId: new Uint8Array([0x00, 0x01, 0x02, 0x03]),
sourceNodeId: 'sourceNodeId-100',
},
],
},
},
};
},
toErrorClass: () => {
return TypeError;
},
toError: () => {
return new (invalidProto.upstreamAliasesStreamId.toErrorClass())('Stringified UUID is invalid');
},
},
};
//# sourceMappingURL=downstream-chunk-ack.js.map