Skip to content

Commit 4f0292a

Browse files
author
Aleksander Boruch-Gruszecki
committed
VsCode: add max message size setting
Note that server doesn't care if the messages are proper JSON or not.
1 parent 623a0a0 commit 4f0292a

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

vscode-dotty/src/tracer.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ export class Tracer {
2929

3030
private readonly remoteTracingUrl: string | undefined
3131
private readonly remoteWorkspaceDumpUrl: string | undefined
32+
private readonly maximumMessageSize: number
3233
private get isTracingEnabled(): boolean {
3334
return Boolean(this.remoteWorkspaceDumpUrl || this.remoteTracingUrl);
3435
}
@@ -40,6 +41,8 @@ export class Tracer {
4041

4142
this.remoteWorkspaceDumpUrl = this.ctx.extensionConfig.get<string>('remoteWorkspaceDumpUrl');
4243
this.remoteTracingUrl = this.ctx.extensionConfig.get<string>('remoteTracingUrl');
44+
const maximumMessageSize = this.ctx.extensionConfig.get<number>('maximumMessageSize');
45+
this.maximumMessageSize = maximumMessageSize === undefined ? 512 : maximumMessageSize;
4346

4447
this.machineId = (() => {
4548
const machineIdKey = 'tracing.machineId';
@@ -290,11 +293,18 @@ export class Tracer {
290293
log += '\n';
291294
if (this.tracingConsent.get() === 'yes') withSocket((socket) => {
292295
if (socket.readyState === WebSocket.OPEN) {
293-
socket.send(log, (err) => {
296+
const maximumMessageSize /*: Int*/ = this.maximumMessageSize | 0;
297+
const send = (msg: string) => socket.send(msg, (err) => {
294298
if (err) {
295299
this.logError('socket send error', err)
296300
}
297301
});
302+
303+
let start = 0;
304+
while (start < log.length) {
305+
send(log.substring(start, start + maximumMessageSize));
306+
start += maximumMessageSize;
307+
}
298308
log = '';
299309
}
300310
});

0 commit comments

Comments
 (0)