Skip to content

Commit 9f8e730

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 9f8e730

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

vscode-dotty/package.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,11 @@
5656
],
5757
"default": null,
5858
"description": "ID of your machine used when Dotty Language Server tracing is turned on."
59+
},
60+
"dotty.tracing.maximumMessageSize": {
61+
"type": "number",
62+
"default": 512,
63+
"description": "Maximum size for the messages sent to remote server. Larger ones will be split."
5964
}
6065
}
6166
},

vscode-dotty/src/tracer.ts

Lines changed: 10 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>('tracing.maximumMessageSize');
45+
this.maximumMessageSize = maximumMessageSize === undefined || maximumMessageSize < 0 ? 0 : maximumMessageSize | 0;
4346

4447
this.machineId = (() => {
4548
const machineIdKey = 'tracing.machineId';
@@ -290,11 +293,17 @@ 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 send = (msg: string) => socket.send(msg, (err) => {
294297
if (err) {
295298
this.logError('socket send error', err)
296299
}
297300
});
301+
302+
let start = 0;
303+
while (start < log.length) {
304+
send(log.substring(start, start + this.maximumMessageSize));
305+
start += this.maximumMessageSize;
306+
}
298307
log = '';
299308
}
300309
});

0 commit comments

Comments
 (0)