@typeberry/lib 0.5.3-fb6e98a → 0.5.4-9233977
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/packages/core/networking/certificate.d.ts.map +1 -1
- package/packages/core/networking/certificate.js +1 -0
- package/packages/core/networking/package.json +1 -1
- package/packages/core/networking/setup.d.ts.map +1 -1
- package/packages/core/networking/setup.js +16 -12
- package/packages/core/telemetry/package.json +1 -1
- package/packages/extensions/ipc/jamnp/handler.d.ts +5 -4
- package/packages/extensions/ipc/jamnp/handler.d.ts.map +1 -1
- package/packages/extensions/ipc/jamnp/handler.js +59 -34
- package/packages/extensions/ipc/jamnp/stream.d.ts +6 -4
- package/packages/extensions/ipc/jamnp/stream.d.ts.map +1 -1
- package/packages/jam/block/work-package.d.ts +3 -1
- package/packages/jam/block/work-package.d.ts.map +1 -1
- package/packages/jam/block/work-package.js +6 -2
- package/packages/jam/block-json/block.d.ts +125 -0
- package/packages/jam/block-json/block.d.ts.map +1 -1
- package/packages/jam/block-json/block.js +9 -2
- package/packages/jam/fuzz-proto/v1/handler.d.ts +1 -1
- package/packages/jam/fuzz-proto/v1/handler.d.ts.map +1 -1
- package/packages/jam/fuzz-proto/v1/handler.js +43 -19
- package/packages/jam/jamnp-s/peers.d.ts.map +1 -1
- package/packages/jam/jamnp-s/peers.js +10 -0
- package/packages/jam/jamnp-s/protocol/ce-128-block-request.d.ts +1 -1
- package/packages/jam/jamnp-s/protocol/ce-128-block-request.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-128-block-request.js +10 -8
- package/packages/jam/jamnp-s/protocol/ce-129-state-request.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-129-state-request.js +11 -9
- package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts +3 -3
- package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.js +2 -2
- package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts +2 -2
- package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.js +2 -2
- package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.js +8 -6
- package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts +3 -3
- package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.js +2 -2
- package/packages/jam/jamnp-s/protocol/stream.d.ts +13 -7
- package/packages/jam/jamnp-s/protocol/stream.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/stream.js +5 -4
- package/packages/jam/jamnp-s/protocol/test-utils.d.ts +1 -1
- package/packages/jam/jamnp-s/protocol/test-utils.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/test-utils.js +9 -12
- package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts +1 -1
- package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/up-0-block-announcement.js +1 -1
- package/packages/jam/jamnp-s/stream-manager.d.ts.map +1 -1
- package/packages/jam/jamnp-s/stream-manager.js +7 -5
- package/packages/jam/jamnp-s/stream-manager.test.js +8 -5
- package/packages/jam/jamnp-s/tasks/sync.js +1 -1
- package/packages/jam/node/jam-config.d.ts +4 -1
- package/packages/jam/node/jam-config.d.ts.map +1 -1
- package/packages/jam/node/jam-config.js +6 -2
- package/packages/jam/node/main.d.ts.map +1 -1
- package/packages/jam/node/main.js +5 -4
- package/packages/jam/node/package.json +1 -1
- package/packages/jam/state-vectors/index.d.ts +377 -5
- package/packages/jam/state-vectors/index.d.ts.map +1 -1
- package/packages/jam/state-vectors/index.js +3 -3
- package/packages/jam/transition/reports/error.d.ts +3 -1
- package/packages/jam/transition/reports/error.d.ts.map +1 -1
- package/packages/jam/transition/reports/error.js +2 -0
- package/packages/jam/transition/reports/verify-basic.d.ts.map +1 -1
- package/packages/jam/transition/reports/verify-basic.js +10 -0
- package/packages/jam/transition/reports/verify-basic.test.js +29 -0
- package/packages/workers/block-authorship/main.d.ts.map +1 -1
- package/packages/workers/block-authorship/main.js +23 -4
- package/packages/workers/block-authorship/package.json +1 -1
- package/packages/workers/block-authorship/protocol.d.ts +3 -1
- package/packages/workers/block-authorship/protocol.d.ts.map +1 -1
- package/packages/workers/block-authorship/protocol.js +6 -3
- package/packages/workers/importer/importer.d.ts.map +1 -1
- package/packages/workers/importer/importer.js +0 -1
- package/packages/workers/importer/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/fuzz-proto/v1/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAe,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/fuzz-proto/v1/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAe,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EACL,YAAY,EAEZ,KAAK,UAAU,EACf,KAAK,QAAQ,EAKb,KAAK,QAAQ,EACd,MAAM,YAAY,CAAC;AAIpB;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEhD;;;OAGG;IACH,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAEvD;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC;IAE5E,gEAAgE;IAChE,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;CAC5D;AAED,qBAAa,UAAW,YAAW,UAAU;aAIzB,UAAU,EAAE,kBAAkB;aAC9B,MAAM,EAAE,SAAS;aACjB,IAAI,EAAE,SAAS;IALjC,OAAO,CAAC,eAAe,CAAK;gBAGV,UAAU,EAAE,kBAAkB,EAC9B,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,SAAS;IAG3B,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;YAiBvC,iBAAiB;IA2H/B,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE;QAAE,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE,GAAG,IAAI;IAI3C,4DAA4D;IAC5D,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAGrC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Decoder, Encoder } from "#@typeberry/codec";
|
|
2
2
|
import { Logger } from "#@typeberry/logger";
|
|
3
3
|
import { assertNever } from "#@typeberry/utils";
|
|
4
|
-
import { Features, MessageType, messageCodec, } from "./types.js";
|
|
4
|
+
import { ErrorMessage, Features, MessageType, messageCodec, } from "./types.js";
|
|
5
5
|
const logger = Logger.new(import.meta.filename, "ext-ipc-fuzz-v1");
|
|
6
6
|
export class FuzzTarget {
|
|
7
7
|
msgHandler;
|
|
@@ -53,35 +53,59 @@ export class FuzzTarget {
|
|
|
53
53
|
break;
|
|
54
54
|
}
|
|
55
55
|
case MessageType.Initialize: {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
type: MessageType.StateRoot,
|
|
59
|
-
value: stateRoot,
|
|
60
|
-
};
|
|
61
|
-
break;
|
|
62
|
-
}
|
|
63
|
-
case MessageType.ImportBlock: {
|
|
64
|
-
const result = await this.msgHandler.importBlock(message.value);
|
|
65
|
-
if (result.isOk) {
|
|
56
|
+
try {
|
|
57
|
+
const stateRoot = await this.msgHandler.initialize(message.value);
|
|
66
58
|
response = {
|
|
67
59
|
type: MessageType.StateRoot,
|
|
68
|
-
value:
|
|
60
|
+
value: stateRoot,
|
|
69
61
|
};
|
|
70
62
|
}
|
|
71
|
-
|
|
63
|
+
catch (e) {
|
|
72
64
|
response = {
|
|
73
65
|
type: MessageType.Error,
|
|
74
|
-
value:
|
|
66
|
+
value: ErrorMessage.create({ message: `initialize error: ${e}` }),
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
case MessageType.ImportBlock: {
|
|
72
|
+
try {
|
|
73
|
+
const result = await this.msgHandler.importBlock(message.value);
|
|
74
|
+
if (result.isOk) {
|
|
75
|
+
response = {
|
|
76
|
+
type: MessageType.StateRoot,
|
|
77
|
+
value: result.ok,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
response = {
|
|
82
|
+
type: MessageType.Error,
|
|
83
|
+
value: result.error,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch (e) {
|
|
88
|
+
response = {
|
|
89
|
+
type: MessageType.Error,
|
|
90
|
+
value: ErrorMessage.create({ message: `importBlock error: ${e}` }),
|
|
75
91
|
};
|
|
76
92
|
}
|
|
77
93
|
break;
|
|
78
94
|
}
|
|
79
95
|
case MessageType.GetState: {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
96
|
+
try {
|
|
97
|
+
const state = await this.msgHandler.getSerializedState(message.value);
|
|
98
|
+
response = {
|
|
99
|
+
type: MessageType.State,
|
|
100
|
+
value: state,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
catch (e) {
|
|
104
|
+
response = {
|
|
105
|
+
type: MessageType.Error,
|
|
106
|
+
value: ErrorMessage.create({ message: `getState error: ${e}` }),
|
|
107
|
+
};
|
|
108
|
+
}
|
|
85
109
|
break;
|
|
86
110
|
}
|
|
87
111
|
case MessageType.StateRoot: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peers.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/jamnp-s/peers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAGhF,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,KAAK,QAAQ,GAAG;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,WAAW,CAAC;IAErB,iDAAiD;IACjD,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IAErB,cAAc,EAAE,eAAe,CAAC;IAEhC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,CAAC,CAAC;CACZ,CAAC;AAWF;;;;;;;GAOG;AACH,qBAAa,WAAW;IAIV,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,oFAAoF;IACpF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoC;gBAEhC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC;IAWnD,qDAAqD;IACrD,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IAInD,yDAAyD;IACzD,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS;IAI1D,sDAAsD;IACtD,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,SAAS,KAAK,CAAC;IAM7E,sDAAsD;IACtD,YAAY;IAIZ,iDAAiD;IAChD,iBAAiB;IAQlB,oDAAoD;IACpD,OAAO,CAAC,UAAU;IAyBlB,8EAA8E;YAChE,iBAAiB;
|
|
1
|
+
{"version":3,"file":"peers.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/jamnp-s/peers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAGhF,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,KAAK,QAAQ,GAAG;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,WAAW,CAAC;IAErB,iDAAiD;IACjD,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IAErB,cAAc,EAAE,eAAe,CAAC;IAEhC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,CAAC,CAAC;CACZ,CAAC;AAWF;;;;;;;GAOG;AACH,qBAAa,WAAW;IAIV,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,oFAAoF;IACpF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoC;gBAEhC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC;IAWnD,qDAAqD;IACrD,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IAInD,yDAAyD;IACzD,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS;IAI1D,sDAAsD;IACtD,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,SAAS,KAAK,CAAC;IAM7E,sDAAsD;IACtD,YAAY;IAIZ,iDAAiD;IAChD,iBAAiB;IAQlB,oDAAoD;IACpD,OAAO,CAAC,UAAU;IAyBlB,8EAA8E;YAChE,iBAAiB;IAqE/B;;;;;OAKG;IACH,kBAAkB,CAAC,SAAS,EAAE,QAAQ,EAAE;CAezC"}
|
|
@@ -90,6 +90,8 @@ export class Connections {
|
|
|
90
90
|
return;
|
|
91
91
|
}
|
|
92
92
|
if (markAsDisconnected) {
|
|
93
|
+
// abort any existing reconnect task
|
|
94
|
+
meta.backgroundTask.abort();
|
|
93
95
|
// mark the peer as disconnected
|
|
94
96
|
meta.peerRef = null;
|
|
95
97
|
meta.backgroundTask = new AbortController();
|
|
@@ -120,6 +122,10 @@ export class Connections {
|
|
|
120
122
|
if (meta.peerRef !== null) {
|
|
121
123
|
return;
|
|
122
124
|
}
|
|
125
|
+
// also check via network.peers to handle race with incoming connections
|
|
126
|
+
if (this.network.peers.isConnected(id)) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
123
129
|
// attempt to connect to the peer
|
|
124
130
|
try {
|
|
125
131
|
logger.trace `[${id}] Attempting to connect to peer at ${meta.address.host}:${meta.address.port}.`;
|
|
@@ -130,6 +136,10 @@ export class Connections {
|
|
|
130
136
|
if (signal.aborted) {
|
|
131
137
|
return;
|
|
132
138
|
}
|
|
139
|
+
// check if we got connected via incoming connection while dialing
|
|
140
|
+
if (this.network.peers.isConnected(id)) {
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
133
143
|
// failing to connect, will retry.
|
|
134
144
|
logger.trace `[${id}] Failure reason: ${e}`;
|
|
135
145
|
logger.trace `[${id}] attempt failed. Will retry (${meta.currentRetry}/${meta.maxRetries})`;
|
|
@@ -44,7 +44,7 @@ export declare class ServerHandler implements StreamHandler<typeof STREAM_KIND>
|
|
|
44
44
|
kind: 128 & import("@typeberry/numbers").WithBytesRepresentation<1>;
|
|
45
45
|
constructor(chainSpec: ChainSpec, getBlockSequence: (streamId: StreamId, hash: HeaderHash, direction: Direction, maxBlocks: U32) => BlockView[]);
|
|
46
46
|
onStreamMessage(sender: StreamMessageSender, message: BytesBlob): void;
|
|
47
|
-
onClose(): void;
|
|
47
|
+
onClose(_streamId: StreamId): void;
|
|
48
48
|
}
|
|
49
49
|
export declare class ClientHandler implements StreamHandler<typeof STREAM_KIND> {
|
|
50
50
|
private readonly chainSpec;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ce-128-block-request.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/ce-128-block-request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EAAW,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,mBAAmB,EAAmB,MAAM,aAAa,CAAC;AAE3G;;;;GAIG;AAEH,eAAO,MAAM,WAAW,+DAAuB,CAAC;AAEhD,oBAAY,SAAS;IACnB;;;;OAIG;IACH,OAAO,IAAI;IACX;;;;OAIG;IACH,QAAQ,IAAI;CACb;AAED,qBAAa,YAAa,SAAQ,SAAS;aAwBvB,UAAU,EAAE,UAAU;aACtB,SAAS,EAAE,SAAS;aACpB,SAAS,EAAE,GAAG;IAzBhC,MAAM,CAAC,KAAK;;;;QAgBT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,WAAW,CAAC,YAAY,CAAC;IAI7E,OAAO;CAOR;AAID,qBAAa,aAAc,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IAInE,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAJnC,IAAI,gEAAe;gBAGA,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,CACjC,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,GAAG,KACX,SAAS,EAAE;IAGlB,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI;IAYtE,OAAO;
|
|
1
|
+
{"version":3,"file":"ce-128-block-request.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/ce-128-block-request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EAAW,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,mBAAmB,EAAmB,MAAM,aAAa,CAAC;AAE3G;;;;GAIG;AAEH,eAAO,MAAM,WAAW,+DAAuB,CAAC;AAEhD,oBAAY,SAAS;IACnB;;;;OAIG;IACH,OAAO,IAAI;IACX;;;;OAIG;IACH,QAAQ,IAAI;CACb;AAED,qBAAa,YAAa,SAAQ,SAAS;aAwBvB,UAAU,EAAE,UAAU;aACtB,SAAS,EAAE,SAAS;aACpB,SAAS,EAAE,GAAG;IAzBhC,MAAM,CAAC,KAAK;;;;QAgBT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,WAAW,CAAC,YAAY,CAAC;IAI7E,OAAO;CAOR;AAID,qBAAa,aAAc,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IAInE,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAJnC,IAAI,gEAAe;gBAGA,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,CACjC,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,GAAG,KACX,SAAS,EAAE;IAGlB,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI;IAYtE,OAAO,CAAC,SAAS,EAAE,QAAQ;CAC5B;AAED,qBAAa,aAAc,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IAMzD,OAAO,CAAC,QAAQ,CAAC,SAAS;IALtC,IAAI,gEAAe;IAEnB,OAAO,CAAC,gBAAgB,CAA0D;IAClF,OAAO,CAAC,gBAAgB,CAAwD;gBAEnD,SAAS,EAAE,SAAS;IAEjD,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI;IAWtE,OAAO,CAAC,QAAQ,EAAE,QAAQ;IAOpB,oBAAoB,CACxB,MAAM,EAAE,mBAAmB,EAC3B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,GAAG,GACb,OAAO,CAAC,SAAS,EAAE,CAAC;CAgBxB;AAED,0CAA0C;AAC1C,oBAAY,kBAAkB;IAC5B,+CAA+C;IAC/C,YAAY,IAAI;IAChB,iFAAiF;IACjF,WAAW,IAAI;CAChB;AAED,sEAAsE;AACtE,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,QAAQ,EAChB,SAAS,EAAE,UAAU,EACrB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,GAAG,GACT,MAAM,CAAC,SAAS,EAAE,EAAE,kBAAkB,CAAC,CAmEzC"}
|
|
@@ -71,7 +71,7 @@ export class ServerHandler {
|
|
|
71
71
|
sender.bufferAndSend(Encoder.encodeObject(codec.sequenceFixLen(Block.Codec.View, blocks.length), blocks, this.chainSpec));
|
|
72
72
|
sender.close();
|
|
73
73
|
}
|
|
74
|
-
onClose() { }
|
|
74
|
+
onClose(_streamId) { }
|
|
75
75
|
}
|
|
76
76
|
export class ClientHandler {
|
|
77
77
|
chainSpec;
|
|
@@ -82,13 +82,14 @@ export class ClientHandler {
|
|
|
82
82
|
this.chainSpec = chainSpec;
|
|
83
83
|
}
|
|
84
84
|
onStreamMessage(sender, message) {
|
|
85
|
-
|
|
85
|
+
const { streamId } = sender;
|
|
86
|
+
if (!this.promiseResolvers.has(streamId)) {
|
|
86
87
|
throw new Error("Received an unexpected message from the server.");
|
|
87
88
|
}
|
|
88
89
|
const blocks = Decoder.decodeSequence(Block.Codec.View, message, this.chainSpec);
|
|
89
|
-
logger.log `[${
|
|
90
|
-
this.promiseResolvers.get(
|
|
91
|
-
this.promiseResolvers.delete(
|
|
90
|
+
logger.log `[${streamId}] Server returned ${blocks.length} blocks in ${message.length} bytes of data.`;
|
|
91
|
+
this.promiseResolvers.get(streamId)?.(blocks);
|
|
92
|
+
this.promiseResolvers.delete(streamId);
|
|
92
93
|
}
|
|
93
94
|
onClose(streamId) {
|
|
94
95
|
this.promiseRejectors.get(streamId)?.("Stream closed.");
|
|
@@ -96,12 +97,13 @@ export class ClientHandler {
|
|
|
96
97
|
this.promiseRejectors.delete(streamId);
|
|
97
98
|
}
|
|
98
99
|
async requestBlockSequence(sender, headerHash, direction, maxBlocks) {
|
|
99
|
-
|
|
100
|
+
const { streamId } = sender;
|
|
101
|
+
if (this.promiseResolvers.has(streamId)) {
|
|
100
102
|
throw new Error("It is disallowed to use the same stream for multiple requests.");
|
|
101
103
|
}
|
|
102
104
|
return new Promise((resolve, reject) => {
|
|
103
|
-
this.promiseResolvers.set(
|
|
104
|
-
this.promiseRejectors.set(
|
|
105
|
+
this.promiseResolvers.set(streamId, resolve);
|
|
106
|
+
this.promiseRejectors.set(streamId, reject);
|
|
105
107
|
sender.bufferAndSend(Encoder.encodeObject(BlockRequest.Codec, BlockRequest.create({ headerHash, direction, maxBlocks })));
|
|
106
108
|
sender.close();
|
|
107
109
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ce-129-state-request.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/ce-129-state-request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAG7E,OAAO,EAAY,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,mBAAmB,EAAmB,MAAM,aAAa,CAAC;AAE3G;;;;GAIG;AAEH,eAAO,MAAM,WAAW,+DAAuB,CAAC;AAGhD,MAAM,MAAM,GAAG,GAAG,KAAK,CAAC,mBAAmB,CAAC,CAAC;AAO7C,qBAAa,YAAa,SAAQ,SAAS;aAWvB,GAAG,EAAE,GAAG;aACR,KAAK,EAAE,SAAS;IAXlC,MAAM,CAAC,KAAK;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,WAAW,CAAC,YAAY,CAAC;gBAKrC,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,SAAS;CAInC;AAED,qBAAa,aAAc,SAAQ,SAAS;aASN,aAAa,EAAE,YAAY,EAAE;IARjE,MAAM,CAAC,KAAK;;;;;QAET;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,EAAE,WAAW,CAAC,aAAa,CAAC;IAI3D,OAAO;CAGR;AAED,qBAAa,YAAa,SAAQ,SAAS;aAavB,UAAU,EAAE,UAAU;aACtB,QAAQ,EAAE,GAAG;aACb,MAAM,EAAE,GAAG;aACX,WAAW,EAAE,GAAG;IAflC,MAAM,CAAC,KAAK;;;;;QAKT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,WAAW,CAAC,YAAY,CAAC;IAItF,OAAO;CAQR;AAID,qBAAa,OAAQ,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IAO7D,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAClC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IARpC,IAAI,gEAAe;IAEnB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwC;IACtE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA4D;gBAGpE,QAAQ,GAAE,OAAe,EACzB,gBAAgB,CAAC,GAAE,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,QAAQ,EAAE,aAAA,EAC/E,gBAAgB,CAAC,GAAE,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,YAAY,EAAE,aAAA;IAOtG,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"ce-129-state-request.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/ce-129-state-request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAG7E,OAAO,EAAY,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,mBAAmB,EAAmB,MAAM,aAAa,CAAC;AAE3G;;;;GAIG;AAEH,eAAO,MAAM,WAAW,+DAAuB,CAAC;AAGhD,MAAM,MAAM,GAAG,GAAG,KAAK,CAAC,mBAAmB,CAAC,CAAC;AAO7C,qBAAa,YAAa,SAAQ,SAAS;aAWvB,GAAG,EAAE,GAAG;aACR,KAAK,EAAE,SAAS;IAXlC,MAAM,CAAC,KAAK;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,WAAW,CAAC,YAAY,CAAC;gBAKrC,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,SAAS;CAInC;AAED,qBAAa,aAAc,SAAQ,SAAS;aASN,aAAa,EAAE,YAAY,EAAE;IARjE,MAAM,CAAC,KAAK;;;;;QAET;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,EAAE,WAAW,CAAC,aAAa,CAAC;IAI3D,OAAO;CAGR;AAED,qBAAa,YAAa,SAAQ,SAAS;aAavB,UAAU,EAAE,UAAU;aACtB,QAAQ,EAAE,GAAG;aACb,MAAM,EAAE,GAAG;aACX,WAAW,EAAE,GAAG;IAflC,MAAM,CAAC,KAAK;;;;;QAKT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,WAAW,CAAC,YAAY,CAAC;IAItF,OAAO;CAQR;AAID,qBAAa,OAAQ,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IAO7D,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAClC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IARpC,IAAI,gEAAe;IAEnB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwC;IACtE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA4D;gBAGpE,QAAQ,GAAE,OAAe,EACzB,gBAAgB,CAAC,GAAE,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,QAAQ,EAAE,aAAA,EAC/E,gBAAgB,CAAC,GAAE,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,YAAY,EAAE,aAAA;IAOtG,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI;IAgCtE,OAAO,CAAC,QAAQ,EAAE,QAAQ;IAK1B,aAAa,CACX,MAAM,EAAE,mBAAmB,EAC3B,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,YAAY,CAAC,UAAU,CAAC,EAClC,UAAU,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI;CAe7C"}
|
|
@@ -82,37 +82,39 @@ export class Handler {
|
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
84
|
onStreamMessage(sender, message) {
|
|
85
|
+
const { streamId } = sender;
|
|
85
86
|
if (this.isServer) {
|
|
86
|
-
logger.info `[${
|
|
87
|
+
logger.info `[${streamId}][server]: Received request.`;
|
|
87
88
|
if (this.getBoundaryNodes === undefined || this.getKeyValuePairs === undefined) {
|
|
88
89
|
return;
|
|
89
90
|
}
|
|
90
91
|
const request = Decoder.decodeObject(StateRequest.Codec, message);
|
|
91
92
|
const boundaryNodes = this.getBoundaryNodes(request.headerHash, request.startKey, request.endKey);
|
|
92
93
|
const keyValuePairs = this.getKeyValuePairs(request.headerHash, request.startKey, request.endKey);
|
|
93
|
-
logger.info `[${
|
|
94
|
+
logger.info `[${streamId}][server]: <-- responding with boundary nodes and key value pairs.`;
|
|
94
95
|
sender.bufferAndSend(Encoder.encodeObject(codec.sequenceVarLen(trieNodeCodec), boundaryNodes));
|
|
95
96
|
sender.bufferAndSend(Encoder.encodeObject(StateResponse.Codec, StateResponse.create({ keyValuePairs })));
|
|
96
97
|
sender.close();
|
|
97
98
|
return;
|
|
98
99
|
}
|
|
99
|
-
if (!this.boundaryNodes.has(
|
|
100
|
-
this.boundaryNodes.set(
|
|
101
|
-
logger.info `[${
|
|
100
|
+
if (!this.boundaryNodes.has(streamId)) {
|
|
101
|
+
this.boundaryNodes.set(streamId, Decoder.decodeObject(codec.sequenceVarLen(trieNodeCodec), message));
|
|
102
|
+
logger.info `[${streamId}][client]: Received boundary nodes.`;
|
|
102
103
|
return;
|
|
103
104
|
}
|
|
104
|
-
this.onResponse.get(
|
|
105
|
-
logger.info `[${
|
|
105
|
+
this.onResponse.get(streamId)?.(Decoder.decodeObject(StateResponse.Codec, message));
|
|
106
|
+
logger.info `[${streamId}][client]: Received state values.`;
|
|
106
107
|
}
|
|
107
108
|
onClose(streamId) {
|
|
108
109
|
this.boundaryNodes.delete(streamId);
|
|
109
110
|
this.onResponse.delete(streamId);
|
|
110
111
|
}
|
|
111
112
|
getStateByKey(sender, headerHash, startKey, onResponse) {
|
|
112
|
-
|
|
113
|
+
const { streamId } = sender;
|
|
114
|
+
if (this.onResponse.has(streamId)) {
|
|
113
115
|
throw new Error("It is disallowed to use the same stream for multiple requests.");
|
|
114
116
|
}
|
|
115
|
-
this.onResponse.set(
|
|
117
|
+
this.onResponse.set(streamId, onResponse);
|
|
116
118
|
sender.bufferAndSend(Encoder.encodeObject(StateRequest.Codec, StateRequest.create({ headerHash, startKey, endKey: startKey, maximumSize: tryAsU32(4096) })));
|
|
117
119
|
sender.close();
|
|
118
120
|
}
|
|
@@ -3,7 +3,7 @@ import { SignedTicket } from "#@typeberry/block/tickets.js";
|
|
|
3
3
|
import type { BytesBlob } from "#@typeberry/bytes";
|
|
4
4
|
import { type CodecRecord } from "#@typeberry/codec";
|
|
5
5
|
import { WithDebug } from "#@typeberry/utils";
|
|
6
|
-
import { type StreamHandler, type StreamMessageSender } from "./stream.js";
|
|
6
|
+
import { type StreamHandler, type StreamId, type StreamMessageSender } from "./stream.js";
|
|
7
7
|
/**
|
|
8
8
|
* JAM-SNP CE-131 and CE-132 streams.
|
|
9
9
|
*
|
|
@@ -32,13 +32,13 @@ export declare class ServerHandler<T extends STREAM_KIND> implements StreamHandl
|
|
|
32
32
|
private readonly onTicketReceived;
|
|
33
33
|
constructor(kind: T, onTicketReceived: (epochIndex: Epoch, ticket: SignedTicket) => void);
|
|
34
34
|
onStreamMessage(sender: StreamMessageSender, message: BytesBlob): void;
|
|
35
|
-
onClose(): void;
|
|
35
|
+
onClose(_streamId: StreamId): void;
|
|
36
36
|
}
|
|
37
37
|
export declare class ClientHandler<T extends STREAM_KIND> implements StreamHandler<T> {
|
|
38
38
|
readonly kind: T;
|
|
39
39
|
constructor(kind: T);
|
|
40
40
|
onStreamMessage(sender: StreamMessageSender): void;
|
|
41
|
-
onClose(): void;
|
|
41
|
+
onClose(_streamId: StreamId): void;
|
|
42
42
|
sendTicket(sender: StreamMessageSender, epochIndex: Epoch, ticket: SignedTicket): void;
|
|
43
43
|
}
|
|
44
44
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ce-131-ce-132-safrole-ticket-distribution.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAE7E,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAmB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ce-131-ce-132-safrole-ticket-distribution.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAE7E,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,mBAAmB,EAAmB,MAAM,aAAa,CAAC;AAE3G;;;;;;GAMG;AAEH,eAAO,MAAM,8BAA8B,+DAAuB,CAAC;AACnE,eAAO,MAAM,wBAAwB,+DAAuB,CAAC;AAE7D,KAAK,WAAW,GAAG,OAAO,8BAA8B,GAAG,OAAO,wBAAwB,CAAC;AAE3F,qBAAa,yBAA0B,SAAQ,SAAS;aAWpC,UAAU,EAAE,KAAK;aACjB,MAAM,EAAE,YAAY;IAXtC,MAAM,CAAC,KAAK;;;;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,WAAW,CAAC,yBAAyB,CAAC;IAI5E,OAAO;CAMR;AAID,qBAAa,aAAa,CAAC,CAAC,SAAS,WAAW,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;aAEzD,IAAI,EAAE,CAAC;IACvB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBADjB,IAAI,EAAE,CAAC,EACN,gBAAgB,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI;IAGtF,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI;IAOtE,OAAO,CAAC,SAAS,EAAE,QAAQ;CAC5B;AAED,qBAAa,aAAa,CAAC,CAAC,SAAS,WAAW,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;aAC/C,IAAI,EAAE,CAAC;gBAAP,IAAI,EAAE,CAAC;IAEnC,eAAe,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI;IAKlD,OAAO,CAAC,SAAS,EAAE,QAAQ;IAE3B,UAAU,CAAC,MAAM,EAAE,mBAAmB,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY;CAKhF"}
|
|
@@ -42,7 +42,7 @@ export class ServerHandler {
|
|
|
42
42
|
this.onTicketReceived(ticketDistribution.epochIndex, ticketDistribution.ticket);
|
|
43
43
|
sender.close();
|
|
44
44
|
}
|
|
45
|
-
onClose() { }
|
|
45
|
+
onClose(_streamId) { }
|
|
46
46
|
}
|
|
47
47
|
export class ClientHandler {
|
|
48
48
|
kind;
|
|
@@ -53,7 +53,7 @@ export class ClientHandler {
|
|
|
53
53
|
logger.warn `[${sender.streamId}][ce-${this.kind}] Unexpected message received. Closing.`;
|
|
54
54
|
sender.close();
|
|
55
55
|
}
|
|
56
|
-
onClose() { }
|
|
56
|
+
onClose(_streamId) { }
|
|
57
57
|
sendTicket(sender, epochIndex, ticket) {
|
|
58
58
|
const request = TicketDistributionRequest.create({ epochIndex, ticket });
|
|
59
59
|
sender.bufferAndSend(Encoder.encodeObject(TicketDistributionRequest.Codec, request));
|
|
@@ -56,14 +56,14 @@ export declare class ServerHandler implements StreamHandler<typeof STREAM_KIND>
|
|
|
56
56
|
private readonly onWorkPackage;
|
|
57
57
|
kind: 133 & import("@typeberry/numbers").WithBytesRepresentation<1>;
|
|
58
58
|
constructor(onWorkPackage: (i: CoreIndex, w: WorkPackage, e: WorkPackageExtrinsics) => void);
|
|
59
|
-
readonly workPackages: Map<import("@typeberry/
|
|
59
|
+
readonly workPackages: Map<string & import("@typeberry/utils").WithOpaque<"streamId">, CoreWorkPackage>;
|
|
60
60
|
onStreamMessage(sender: StreamMessageSender, message: BytesBlob): void;
|
|
61
61
|
onClose(streamId: StreamId): void;
|
|
62
62
|
}
|
|
63
63
|
export declare class ClientHandler implements StreamHandler<typeof STREAM_KIND> {
|
|
64
64
|
kind: 133 & import("@typeberry/numbers").WithBytesRepresentation<1>;
|
|
65
65
|
onStreamMessage(sender: StreamMessageSender): void;
|
|
66
|
-
onClose(): void;
|
|
66
|
+
onClose(_streamId: StreamId): void;
|
|
67
67
|
sendWorkPackage(sender: StreamMessageSender, coreIndex: CoreIndex, workPackage: WorkPackage, extrinsic: WorkPackageExtrinsics): void;
|
|
68
68
|
}
|
|
69
69
|
//# sourceMappingURL=ce-133-work-package-submission.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ce-133-work-package-submission.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/ce-133-work-package-submission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,qBAAqB,EAA2B,MAAM,+BAA+B,CAAC;AACpG,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAE7E,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,mBAAmB,EAAmB,MAAM,aAAa,CAAC;AAE3G;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,+DAAuB,CAAC;AAEhD,qBAAa,eAAgB,SAAQ,SAAS;aAW1B,SAAS,EAAE,SAAS;aACpB,WAAW,EAAE,WAAW;IAX1C,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,WAAW,CAAC,eAAe,CAAC;IAItE,OAAO;CAMR;AAID,qBAAa,aAAc,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IAGzD,OAAO,CAAC,QAAQ,CAAC,aAAa;IAF1C,IAAI,gEAAe;gBAEU,aAAa,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,qBAAqB,KAAK,IAAI;IAE5G,SAAgB,YAAY,
|
|
1
|
+
{"version":3,"file":"ce-133-work-package-submission.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/ce-133-work-package-submission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,qBAAqB,EAA2B,MAAM,+BAA+B,CAAC;AACpG,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAE7E,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,mBAAmB,EAAmB,MAAM,aAAa,CAAC;AAE3G;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,+DAAuB,CAAC;AAEhD,qBAAa,eAAgB,SAAQ,SAAS;aAW1B,SAAS,EAAE,SAAS;aACpB,WAAW,EAAE,WAAW;IAX1C,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,WAAW,CAAC,eAAe,CAAC;IAItE,OAAO;CAMR;AAID,qBAAa,aAAc,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IAGzD,OAAO,CAAC,QAAQ,CAAC,aAAa;IAF1C,IAAI,gEAAe;gBAEU,aAAa,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,qBAAqB,KAAK,IAAI;IAE5G,SAAgB,YAAY,mFAAwC;IAEpE,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI;IAiBtE,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;CAGlC;AAED,qBAAa,aAAc,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IACrE,IAAI,gEAAe;IAEnB,eAAe,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI;IAKlD,OAAO,CAAC,SAAS,EAAE,QAAQ,GAAG,IAAI;IAElC,eAAe,CACb,MAAM,EAAE,mBAAmB,EAC3B,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,qBAAqB;CAUnC"}
|
|
@@ -37,7 +37,7 @@ export class ServerHandler {
|
|
|
37
37
|
}
|
|
38
38
|
workPackages = new Map();
|
|
39
39
|
onStreamMessage(sender, message) {
|
|
40
|
-
const streamId = sender
|
|
40
|
+
const { streamId } = sender;
|
|
41
41
|
// initially we expect the `CoreWorkPackage`
|
|
42
42
|
const workPackage = this.workPackages.get(streamId);
|
|
43
43
|
if (workPackage === undefined) {
|
|
@@ -62,7 +62,7 @@ export class ClientHandler {
|
|
|
62
62
|
logger.warn `[${sender.streamId}] Got unexpected message on CE-133 stream. Closing.`;
|
|
63
63
|
sender.close();
|
|
64
64
|
}
|
|
65
|
-
onClose() { }
|
|
65
|
+
onClose(_streamId) { }
|
|
66
66
|
sendWorkPackage(sender, coreIndex, workPackage, extrinsic) {
|
|
67
67
|
const corePack = CoreWorkPackage.create({ coreIndex, workPackage });
|
|
68
68
|
logger.trace `[${sender.streamId}] Sending work package: ${corePack}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ce-134-work-package-sharing.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAA2B,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGnF,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,mBAAmB,EAAmB,MAAM,aAAa,CAAC;AAE3G;;;;;;GAMG;AAIH,KAAK,iBAAiB,GAAG,SAAS,CAAC;AAGnC,eAAO,MAAM,WAAW,+DAAuB,CAAC;AAEhD,qBAAa,yBAA0B,SAAQ,SAAS;aAWpC,SAAS,EAAE,SAAS;aACpB,oBAAoB,EAAE,eAAe,EAAE;IAXzD,MAAM,CAAC,KAAK;;;;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,EAAE,WAAW,CAAC,yBAAyB,CAAC;IAIzF,OAAO;CAMR;AAED,qBAAa,0BAA2B,SAAQ,SAAS;aAWrC,cAAc,EAAE,cAAc;aAC9B,SAAS,EAAE,gBAAgB;IAX7C,MAAM,CAAC,KAAK;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE,WAAW,CAAC,0BAA0B,CAAC;IAIpF,OAAO;CAMR;AAID,qBAAa,aAAc,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IAInE,OAAO,CAAC,QAAQ,CAAC,aAAa;IAHhC,IAAI,gEAAe;gBAGA,aAAa,EAAE,CAC9B,SAAS,EAAE,SAAS,EACpB,oBAAoB,EAAE,eAAe,EAAE,EACvC,iBAAiB,EAAE,iBAAiB,KACjC,OAAO,CAAC;QAAE,cAAc,EAAE,cAAc,CAAC;QAAC,SAAS,EAAE,gBAAgB,CAAA;KAAE,CAAC;IAG/E,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkD;IAE9E,OAAO,CAAC,MAAM,CAAC,cAAc;IAU7B,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI;IAsBtE,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;CAGlC;AAED,qBAAa,aAAc,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IACrE,IAAI,gEAAe;IACnB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAM5B;IAEJ,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"ce-134-work-package-sharing.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAA2B,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGnF,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,mBAAmB,EAAmB,MAAM,aAAa,CAAC;AAE3G;;;;;;GAMG;AAIH,KAAK,iBAAiB,GAAG,SAAS,CAAC;AAGnC,eAAO,MAAM,WAAW,+DAAuB,CAAC;AAEhD,qBAAa,yBAA0B,SAAQ,SAAS;aAWpC,SAAS,EAAE,SAAS;aACpB,oBAAoB,EAAE,eAAe,EAAE;IAXzD,MAAM,CAAC,KAAK;;;;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,EAAE,WAAW,CAAC,yBAAyB,CAAC;IAIzF,OAAO;CAMR;AAED,qBAAa,0BAA2B,SAAQ,SAAS;aAWrC,cAAc,EAAE,cAAc;aAC9B,SAAS,EAAE,gBAAgB;IAX7C,MAAM,CAAC,KAAK;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE,WAAW,CAAC,0BAA0B,CAAC;IAIpF,OAAO;CAMR;AAID,qBAAa,aAAc,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IAInE,OAAO,CAAC,QAAQ,CAAC,aAAa;IAHhC,IAAI,gEAAe;gBAGA,aAAa,EAAE,CAC9B,SAAS,EAAE,SAAS,EACpB,oBAAoB,EAAE,eAAe,EAAE,EACvC,iBAAiB,EAAE,iBAAiB,KACjC,OAAO,CAAC;QAAE,cAAc,EAAE,cAAc,CAAC;QAAC,SAAS,EAAE,gBAAgB,CAAA;KAAE,CAAC;IAG/E,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkD;IAE9E,OAAO,CAAC,MAAM,CAAC,cAAc;IAU7B,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI;IAsBtE,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;CAGlC;AAED,qBAAa,aAAc,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IACrE,IAAI,gEAAe;IACnB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAM5B;IAEJ,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI;IAatE,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAQ3B,eAAe,CACnB,MAAM,EAAE,mBAAmB,EAC3B,SAAS,EAAE,SAAS,EACpB,oBAAoB,EAAE,eAAe,EAAE,EACvC,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC;QAAE,cAAc,EAAE,cAAc,CAAC;QAAC,SAAS,EAAE,gBAAgB,CAAA;KAAE,CAAC;CAY5E"}
|
|
@@ -53,7 +53,7 @@ export class ServerHandler {
|
|
|
53
53
|
sender.close();
|
|
54
54
|
}
|
|
55
55
|
onStreamMessage(sender, message) {
|
|
56
|
-
const streamId = sender
|
|
56
|
+
const { streamId } = sender;
|
|
57
57
|
const request = this.requestsMap.get(streamId);
|
|
58
58
|
if (request === undefined) {
|
|
59
59
|
const receivedRequest = Decoder.decodeObject(WorkPackageSharingRequest.Codec, message);
|
|
@@ -78,12 +78,13 @@ export class ClientHandler {
|
|
|
78
78
|
kind = STREAM_KIND;
|
|
79
79
|
pendingRequests = new Map();
|
|
80
80
|
onStreamMessage(sender, message) {
|
|
81
|
-
const
|
|
81
|
+
const { streamId } = sender;
|
|
82
|
+
const pendingRequest = this.pendingRequests.get(streamId);
|
|
82
83
|
if (pendingRequest === undefined) {
|
|
83
84
|
throw new Error("Unexpected message received.");
|
|
84
85
|
}
|
|
85
86
|
const response = Decoder.decodeObject(WorkPackageSharingResponse.Codec, message);
|
|
86
|
-
logger.info `[${
|
|
87
|
+
logger.info `[${streamId}] Received work report hash and signature.`;
|
|
87
88
|
pendingRequest.resolve({ workReportHash: response.workReportHash, signature: response.signature });
|
|
88
89
|
sender.close();
|
|
89
90
|
}
|
|
@@ -95,13 +96,14 @@ export class ClientHandler {
|
|
|
95
96
|
}
|
|
96
97
|
}
|
|
97
98
|
async sendWorkPackage(sender, coreIndex, segmentsRootMappings, workPackageBundle) {
|
|
99
|
+
const { streamId } = sender;
|
|
98
100
|
const request = WorkPackageSharingRequest.create({ coreIndex, segmentsRootMappings });
|
|
99
|
-
logger.trace `[${
|
|
101
|
+
logger.trace `[${streamId}] Sending core index and segments-root mappings.`;
|
|
100
102
|
sender.bufferAndSend(Encoder.encodeObject(WorkPackageSharingRequest.Codec, request));
|
|
101
|
-
logger.trace `[${
|
|
103
|
+
logger.trace `[${streamId}] Sending work package bundle.`;
|
|
102
104
|
sender.bufferAndSend(Encoder.encodeObject(WorkPackageBundleCodec, workPackageBundle));
|
|
103
105
|
return new Promise((resolve, reject) => {
|
|
104
|
-
this.pendingRequests.set(
|
|
106
|
+
this.pendingRequests.set(streamId, { resolve, reject });
|
|
105
107
|
});
|
|
106
108
|
}
|
|
107
109
|
}
|
|
@@ -6,7 +6,7 @@ import { type CodecRecord } from "#@typeberry/codec";
|
|
|
6
6
|
import type { KnownSizeArray } from "#@typeberry/collections";
|
|
7
7
|
import type { ChainSpec } from "#@typeberry/config";
|
|
8
8
|
import { WithDebug } from "#@typeberry/utils";
|
|
9
|
-
import { type StreamHandler, type StreamMessageSender } from "./stream.js";
|
|
9
|
+
import { type StreamHandler, type StreamId, type StreamMessageSender } from "./stream.js";
|
|
10
10
|
/**
|
|
11
11
|
* JAMNP-S CE 135 Stream
|
|
12
12
|
*
|
|
@@ -89,14 +89,14 @@ export declare class ServerHandler implements StreamHandler<typeof STREAM_KIND>
|
|
|
89
89
|
kind: 135 & import("@typeberry/numbers").WithBytesRepresentation<1>;
|
|
90
90
|
constructor(chainSpec: ChainSpec, onWorkReport: (workReport: GuaranteedWorkReport) => void);
|
|
91
91
|
onStreamMessage(sender: StreamMessageSender, message: BytesBlob): void;
|
|
92
|
-
onClose(): void;
|
|
92
|
+
onClose(_streamId: StreamId): void;
|
|
93
93
|
}
|
|
94
94
|
export declare class ClientHandler implements StreamHandler<typeof STREAM_KIND> {
|
|
95
95
|
private readonly chainSpec;
|
|
96
96
|
kind: 135 & import("@typeberry/numbers").WithBytesRepresentation<1>;
|
|
97
97
|
constructor(chainSpec: ChainSpec);
|
|
98
98
|
onStreamMessage(sender: StreamMessageSender): void;
|
|
99
|
-
onClose(): void;
|
|
99
|
+
onClose(_streamId: StreamId): void;
|
|
100
100
|
sendWorkReport(sender: StreamMessageSender, workReport: GuaranteedWorkReport): void;
|
|
101
101
|
}
|
|
102
102
|
//# sourceMappingURL=ce-135-work-report-distribution.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ce-135-work-report-distribution.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAmB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ce-135-work-report-distribution.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,mBAAmB,EAAmB,MAAM,aAAa,CAAC;AAE3G;;;;;;GAMG;AAEH,eAAO,MAAM,WAAW,+DAAuB,CAAC;AAEhD,qBAAa,oBAAqB,SAAQ,SAAS;aAkB/B,MAAM,EAAE,UAAU;aAClB,IAAI,EAAE,QAAQ;aACd,UAAU,EAAE,cAAc,CAAC,UAAU,EAAE,sBAAsB,CAAC;IAnBhF,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAUT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,WAAW,CAAC,oBAAoB,CAAC;IAI7E,OAAO;CAOR;AAID,qBAAa,aAAc,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IAInE,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAJ/B,IAAI,gEAAe;gBAGA,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,CAAC,UAAU,EAAE,oBAAoB,KAAK,IAAI;IAG3E,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI;IAOtE,OAAO,CAAC,SAAS,EAAE,QAAQ;CAC5B;AAED,qBAAa,aAAc,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IAGzD,OAAO,CAAC,QAAQ,CAAC,SAAS;IAFtC,IAAI,gEAAe;gBAEU,SAAS,EAAE,SAAS;IAEjD,eAAe,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI;IAKlD,OAAO,CAAC,SAAS,EAAE,QAAQ,GAAG,IAAI;IAElC,cAAc,CAAC,MAAM,EAAE,mBAAmB,EAAE,UAAU,EAAE,oBAAoB;CAK7E"}
|
|
@@ -53,7 +53,7 @@ export class ServerHandler {
|
|
|
53
53
|
this.onWorkReport(guaranteedWorkReport);
|
|
54
54
|
sender.close();
|
|
55
55
|
}
|
|
56
|
-
onClose() { }
|
|
56
|
+
onClose(_streamId) { }
|
|
57
57
|
}
|
|
58
58
|
export class ClientHandler {
|
|
59
59
|
chainSpec;
|
|
@@ -65,7 +65,7 @@ export class ClientHandler {
|
|
|
65
65
|
logger.warn `[${sender.streamId}] Got unexpected message on CE-135 stream. Closing.`;
|
|
66
66
|
sender.close();
|
|
67
67
|
}
|
|
68
|
-
onClose() { }
|
|
68
|
+
onClose(_streamId) { }
|
|
69
69
|
sendWorkReport(sender, workReport) {
|
|
70
70
|
logger.trace `[${sender.streamId}] Sending guaranteed work report.`;
|
|
71
71
|
sender.bufferAndSend(Encoder.encodeObject(GuaranteedWorkReport.Codec, workReport, this.chainSpec));
|
|
@@ -1,16 +1,22 @@
|
|
|
1
1
|
import type { BytesBlob } from "#@typeberry/bytes";
|
|
2
|
-
import { type U8
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
import { type U8 } from "#@typeberry/numbers";
|
|
3
|
+
import { type Opaque } from "#@typeberry/utils";
|
|
4
|
+
/**
|
|
5
|
+
* Globally unique stream identifier.
|
|
6
|
+
*
|
|
7
|
+
* Assigned during stream registration and used as the sole public
|
|
8
|
+
* identifier for a stream throughout the protocol layer.
|
|
9
|
+
*/
|
|
10
|
+
export type StreamId = Opaque<string, "streamId">;
|
|
11
|
+
/** Cast a string as `StreamId`. */
|
|
12
|
+
export declare function tryAsStreamId(id: string): StreamId;
|
|
7
13
|
/** Unique stream kind. */
|
|
8
14
|
export type StreamKind<T extends U8 = U8> = T;
|
|
9
15
|
/** Try to cast the number as `StreamKind`. */
|
|
10
16
|
export declare function tryAsStreamKind<T extends number>(num: T): StreamKind<T & U8>;
|
|
11
17
|
/** Abstraction over sending messages tied to a particular stream. */
|
|
12
18
|
export interface StreamMessageSender {
|
|
13
|
-
/**
|
|
19
|
+
/** Globally unique stream identifier. */
|
|
14
20
|
streamId: StreamId;
|
|
15
21
|
/**
|
|
16
22
|
* Send data blob to the other end.
|
|
@@ -29,7 +35,7 @@ export interface StreamHandler<TStreamKind extends StreamKind = StreamKind> {
|
|
|
29
35
|
readonly kind: TStreamKind;
|
|
30
36
|
/** Handle message for that particular stream kind. */
|
|
31
37
|
onStreamMessage(streamSender: StreamMessageSender, message: BytesBlob): void;
|
|
32
|
-
/** Handle closing of given
|
|
38
|
+
/** Handle closing of given stream. */
|
|
33
39
|
onClose(streamId: StreamId, isError: boolean): void;
|
|
34
40
|
}
|
|
35
41
|
/** Extract the stream kind out of the the handler type. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,
|
|
1
|
+
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAW,KAAK,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE7D;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAElD,mCAAmC;AACnC,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAElD;AAED,0BAA0B;AAC1B,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAC9C,8CAA8C;AAC9C,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC,CAE5E;AAED,qEAAqE;AACrE,MAAM,WAAW,mBAAmB;IAClC,yCAAyC;IACzC,QAAQ,EAAE,QAAQ,CAAC;IAEnB;;;;;;OAMG;IACH,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,gBAAgB,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAEpE,8CAA8C;IAC9C,KAAK,IAAI,IAAI,CAAC;CACf;AAED,iEAAiE;AACjE,MAAM,WAAW,aAAa,CAAC,WAAW,SAAS,UAAU,GAAG,UAAU;IACxE,yBAAyB;IACzB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAE3B,sDAAsD;IACtD,eAAe,CAAC,YAAY,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI,CAAC;IAE7E,sCAAsC;IACtC,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACrD;AAED,2DAA2D;AAC3D,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,aAAa,IAAI,CAAC,SAAS,aAAa,CAAC,MAAM,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { tryAsU8
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { tryAsU8 } from "#@typeberry/numbers";
|
|
2
|
+
import { asOpaqueType } from "#@typeberry/utils";
|
|
3
|
+
/** Cast a string as `StreamId`. */
|
|
4
|
+
export function tryAsStreamId(id) {
|
|
5
|
+
return asOpaqueType(id);
|
|
5
6
|
}
|
|
6
7
|
/** Try to cast the number as `StreamKind`. */
|
|
7
8
|
export function tryAsStreamKind(num) {
|
|
@@ -4,7 +4,7 @@ import { type StreamHandler, type StreamId, type StreamKind, type StreamKindOf,
|
|
|
4
4
|
export declare class TestStreamSender implements StreamMessageSender {
|
|
5
5
|
readonly streamId: StreamId;
|
|
6
6
|
readonly onSend: (data: BytesBlob) => void;
|
|
7
|
-
readonly
|
|
7
|
+
readonly onCloseCallback: () => void;
|
|
8
8
|
constructor(streamId: StreamId, { onSend, onClose, }: {
|
|
9
9
|
onSend: (data: BytesBlob) => void;
|
|
10
10
|
onClose?: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/test-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/test-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,mBAAmB,EAEzB,MAAM,aAAa,CAAC;AAUrB,qBAAa,gBAAiB,YAAW,mBAAmB;aAKxC,QAAQ,EAAE,QAAQ;IAJpC,SAAgB,MAAM,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IAClD,SAAgB,eAAe,EAAE,MAAM,IAAI,CAAC;gBAG1B,QAAQ,EAAE,QAAQ,EAClC,EACE,MAAM,EACN,OAAkB,GACnB,EAAE;QACD,MAAM,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;QAClC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;KACtB;IAMH,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO;IAOvC,KAAK,IAAI,IAAI;CAKd;AAKD,qBAAa,kBAAkB;IAO3B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAN5B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoE;IACtG,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA6C;IAEhF,SAAgB,WAAW,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC,CAAa;gBAG1E,SAAS,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK,mBAAmB;IAG1G,gBAAgB,CAAC,GAAG,QAAQ,EAAE,aAAa,EAAE;IAM7C,aAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI;IASlD,gBAAgB,CAAC,QAAQ,SAAS,aAAa,EAC7C,UAAU,EAAE,YAAY,CAAC,QAAQ,CAAC,EAClC,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,mBAAmB,KAAK,EAAE,GAC3D,IAAI;IASP,aAAa,CAAC,QAAQ,SAAS,aAAa,EAC1C,UAAU,EAAE,YAAY,CAAC,QAAQ,CAAC,EAClC,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,mBAAmB,KAAK,EAAE,GAC3D,IAAI;IASP;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU;IAMhD;;;;;;;;OAQG;IACH,kBAAkB,CAAC,EAAE,EAAE,QAAQ;IAS/B,OAAO,CAAC,wBAAwB;CAsBjC;AAED,wBAAgB,gBAAgB;;;EA6B/B"}
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
import { tryAsStreamId, } from "./stream.js";
|
|
2
|
+
const TEST_PEER_ID = "test-peer";
|
|
3
|
+
let nextTestStreamCounter = 0;
|
|
4
|
+
function nextTestStreamId() {
|
|
5
|
+
return tryAsStreamId(`${TEST_PEER_ID}:${nextTestStreamCounter++}`);
|
|
6
|
+
}
|
|
2
7
|
export class TestStreamSender {
|
|
3
8
|
streamId;
|
|
4
9
|
onSend;
|
|
5
|
-
|
|
10
|
+
onCloseCallback;
|
|
6
11
|
constructor(streamId, { onSend, onClose = () => { }, }) {
|
|
7
12
|
this.streamId = streamId;
|
|
8
13
|
this.onSend = onSend;
|
|
9
|
-
this.
|
|
14
|
+
this.onCloseCallback = onClose;
|
|
10
15
|
}
|
|
11
16
|
bufferAndSend(data) {
|
|
12
17
|
setImmediate(() => {
|
|
@@ -16,7 +21,7 @@ export class TestStreamSender {
|
|
|
16
21
|
}
|
|
17
22
|
close() {
|
|
18
23
|
setImmediate(() => {
|
|
19
|
-
this.
|
|
24
|
+
this.onCloseCallback();
|
|
20
25
|
});
|
|
21
26
|
}
|
|
22
27
|
}
|
|
@@ -50,15 +55,7 @@ export class TestMessageHandler {
|
|
|
50
55
|
work(handler[0], handler[1]);
|
|
51
56
|
}
|
|
52
57
|
withNewStream(streamKind, work) {
|
|
53
|
-
const
|
|
54
|
-
const streams = this.openStreams;
|
|
55
|
-
const streamId = (function findStreamId() {
|
|
56
|
-
const s = getRandomStreamId();
|
|
57
|
-
if (!streams.has(s)) {
|
|
58
|
-
return s;
|
|
59
|
-
}
|
|
60
|
-
return findStreamId();
|
|
61
|
-
})();
|
|
58
|
+
const streamId = nextTestStreamId();
|
|
62
59
|
// since we are picking a non-existing stream id, there is no way of
|
|
63
60
|
// conflicting here, so the `[handler, stream]` will be fresh.
|
|
64
61
|
const [handler, stream] = this.createStreamIfNotPresent(streamId, streamKind);
|
|
@@ -93,7 +93,7 @@ export declare class Handler implements StreamHandler<typeof STREAM_KIND> {
|
|
|
93
93
|
kind: 0 & import("@typeberry/numbers").WithBytesRepresentation<1>;
|
|
94
94
|
private readonly handshakes;
|
|
95
95
|
private readonly pendingHandshakes;
|
|
96
|
-
constructor(spec: ChainSpec, getHandshake: () => Handshake, onAnnouncement: (
|
|
96
|
+
constructor(spec: ChainSpec, getHandshake: () => Handshake, onAnnouncement: (streamId: StreamId, ann: Announcement) => void, onHandshake: (streamId: StreamId, handshake: Handshake) => void);
|
|
97
97
|
onStreamMessage(sender: StreamMessageSender, message: BytesBlob): void;
|
|
98
98
|
onClose(streamId: StreamId): void;
|
|
99
99
|
sendHandshake(sender: StreamMessageSender): void;
|