Skip to content

Commit 875e62c

Browse files
committed
remove compression
1 parent 37f26cb commit 875e62c

6 files changed

Lines changed: 36 additions & 67 deletions

File tree

src/harness/harness.ts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -77,12 +77,6 @@ namespace Utils {
7777
return Buffer ? Buffer.byteLength(s, encoding) : s.length;
7878
}
7979

80-
export function compress(s: string): any {
81-
return Buffer ? new Buffer(s, "utf8") : { data: s, length: s.length };
82-
}
83-
84-
export const maxUncompressedMessageSize = Number.MAX_VALUE;
85-
8680
export function evalFile(fileContents: string, fileName: string, nodeContext?: any) {
8781
const environment = getExecutionEnvironment();
8882
switch (environment) {

src/harness/harnessLanguageService.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -696,10 +696,8 @@ namespace Harness.LanguageService {
696696
const server = new ts.server.Session(serverHost,
697697
{ isCancellationRequested: () => false },
698698
/*useOneInferredProject*/ false,
699-
/*typingsInstaller*/ undefined,
699+
/*typingsInstaller*/ undefined,
700700
Utils.byteLength,
701-
Utils.maxUncompressedMessageSize,
702-
Utils.compress,
703701
process.hrtime, serverHost);
704702

705703
// Fake the connection between the client and the server

src/harness/unittests/session.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ namespace ts.server {
4444
let lastSent: protocol.Message;
4545

4646
beforeEach(() => {
47-
session = new Session(mockHost, nullCancellationToken, /*useOneInferredProject*/ false, /*typingsInstaller*/ undefined, Utils.byteLength, Utils.maxUncompressedMessageSize, Utils.compress, process.hrtime, mockLogger);
47+
session = new Session(mockHost, nullCancellationToken, /*useOneInferredProject*/ false, /*typingsInstaller*/ undefined, Utils.byteLength, process.hrtime, mockLogger);
4848
session.send = (msg: protocol.Message) => {
4949
lastSent = msg;
5050
};
@@ -182,7 +182,7 @@ namespace ts.server {
182182

183183
session.send = Session.prototype.send;
184184
assert(session.send);
185-
expect(session.send(msg, /*canCompressResponse*/ false)).to.not.exist;
185+
expect(session.send(msg)).to.not.exist;
186186
expect(lastWrittenToHost).to.equal(resultMsg);
187187
});
188188
});
@@ -250,7 +250,7 @@ namespace ts.server {
250250
};
251251
const command = "test";
252252

253-
session.output(body, command, /*canCompressResponse*/ false);
253+
session.output(body, command);
254254

255255
expect(lastSent).to.deep.equal({
256256
seq: 0,
@@ -269,7 +269,7 @@ namespace ts.server {
269269
lastSent: protocol.Message;
270270
customHandler = "testhandler";
271271
constructor() {
272-
super(mockHost, nullCancellationToken, /*useOneInferredProject*/ false, /*typingsInstaller*/ undefined, Utils.byteLength, Utils.maxUncompressedMessageSize, Utils.compress, process.hrtime, mockLogger);
272+
super(mockHost, nullCancellationToken, /*useOneInferredProject*/ false, /*typingsInstaller*/ undefined, Utils.byteLength, process.hrtime, mockLogger);
273273
this.addProtocolHandler(this.customHandler, () => {
274274
return { response: undefined, responseRequired: true };
275275
});
@@ -288,7 +288,7 @@ namespace ts.server {
288288
};
289289
const command = "test";
290290

291-
session.output(body, command, /*canCompressResponse*/ false);
291+
session.output(body, command);
292292

293293
expect(session.lastSent).to.deep.equal({
294294
seq: 0,
@@ -327,7 +327,7 @@ namespace ts.server {
327327
class InProcSession extends Session {
328328
private queue: protocol.Request[] = [];
329329
constructor(private client: InProcClient) {
330-
super(mockHost, nullCancellationToken, /*useOneInferredProject*/ false, /*typingsInstaller*/ undefined, Utils.byteLength, Utils.maxUncompressedMessageSize, Utils.compress, process.hrtime, mockLogger);
330+
super(mockHost, nullCancellationToken, /*useOneInferredProject*/ false, /*typingsInstaller*/ undefined, Utils.byteLength, process.hrtime, mockLogger);
331331
this.addProtocolHandler("echo", (req: protocol.Request) => ({
332332
response: req.arguments,
333333
responseRequired: true
@@ -348,11 +348,11 @@ namespace ts.server {
348348
({ response } = this.executeCommand(msg));
349349
}
350350
catch (e) {
351-
this.output(undefined, msg.command, /*canCompressResponse*/ false, msg.seq, e.toString());
351+
this.output(undefined, msg.command, msg.seq, e.toString());
352352
return;
353353
}
354354
if (response) {
355-
this.output(response, msg.command, /*canCompressResponse*/ false, msg.seq);
355+
this.output(response, msg.command, msg.seq);
356356
}
357357
}
358358

src/server/protocol.d.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,6 @@ declare namespace ts.server.protocol {
3030
* Object containing arguments for the command
3131
*/
3232
arguments?: any;
33-
34-
canCompressResponse?: boolean;
3533
}
3634

3735
/**

src/server/server.ts

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,6 @@
55

66
namespace ts.server {
77

8-
const zlib: {
9-
gzipSync(buf: Buffer): Buffer
10-
} = require("zlib");
11-
128
const net: {
139
connect(options: { port: number }, onConnect?: () => void): NodeSocket
1410
} = require("net");
@@ -86,13 +82,6 @@ namespace ts.server {
8682
terminal: false,
8783
});
8884

89-
function compress(s: string): CompressedData {
90-
const data = zlib.gzipSync(new Buffer(s, "utf8"));
91-
return { data, length: data.length, compressionKind: "gzip" };
92-
}
93-
94-
const maxUncompressedMessageSize = 84000;
95-
9685
class Logger implements ts.server.Logger {
9786
private fd = -1;
9887
private seq = 0;
@@ -178,7 +167,7 @@ namespace ts.server {
178167
private socket: NodeSocket;
179168
private projectService: ProjectService;
180169

181-
constructor(private readonly logger: server.Logger, private readonly eventPort: number) {
170+
constructor(private readonly logger: server.Logger, private readonly eventPort: number, private newLine: string) {
182171
if (eventPort) {
183172
const s = net.connect({ port: eventPort }, () => {
184173
this.socket = s;
@@ -221,14 +210,14 @@ namespace ts.server {
221210
}
222211
this.projectService.updateTypingsForProject(response);
223212
if (response.kind == "set" && this.socket) {
224-
this.socket.write(JSON.stringify({ kind: "updateTypings", message: response }) + "\r\n", "utf8");
213+
this.socket.write(formatMessage({ seq: 0, type: "event", message: response }, this.logger, Buffer.byteLength, this.newLine), "utf8");
225214
}
226215
}
227216
}
228217

229218
class IOSession extends Session {
230219
constructor(host: ServerHost, cancellationToken: HostCancellationToken, eventPort: number, useSingleInferredProject: boolean, logger: server.Logger) {
231-
super(host, cancellationToken, useSingleInferredProject, new NodeTypingsInstaller(logger, eventPort), Buffer.byteLength, maxUncompressedMessageSize, compress, process.hrtime, logger);
220+
super(host, cancellationToken, useSingleInferredProject, new NodeTypingsInstaller(logger, eventPort, host.newLine), Buffer.byteLength, process.hrtime, logger);
232221
}
233222

234223
exit() {

src/server/session.ts

Lines changed: 24 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,18 @@ namespace ts.server {
132132
export const CompilerOptionsForInferredProjects = "compilerOptionsForInferredProjects";
133133
}
134134

135+
export function formatMessage<T extends protocol.Message>(msg: T, logger: server.Logger, byteLength: (s: string, encoding: string) => number, newLine: string): string {
136+
const verboseLogging = logger.hasLevel(LogLevel.verbose);
137+
138+
const json = JSON.stringify(msg);
139+
if (verboseLogging) {
140+
logger.info(msg.type + ": " + json);
141+
}
142+
143+
const len = byteLength(json, "utf8");
144+
return `Content-Length: ${1 + len}\r\n\r\n${json}${newLine}`;
145+
}
146+
135147
export class Session {
136148
private readonly gcTimer: GcTimer;
137149
protected projectService: ProjectService;
@@ -145,8 +157,6 @@ namespace ts.server {
145157
useSingleInferredProject: boolean,
146158
protected readonly typingsInstaller: ITypingsInstaller,
147159
private byteLength: (buf: string, encoding?: string) => number,
148-
private maxUncompressedMessageSize: number,
149-
private compress: (s: string) => CompressedData,
150160
private hrtime: (start?: number[]) => number[],
151161
protected logger: Logger) {
152162
this.projectService =
@@ -175,27 +185,8 @@ namespace ts.server {
175185
this.logger.msg(msg, Msg.Err);
176186
}
177187

178-
public send(msg: protocol.Message, canCompressResponse: boolean) {
179-
const verboseLogging = this.logger.hasLevel(LogLevel.verbose);
180-
181-
const json = JSON.stringify(msg);
182-
if (verboseLogging) {
183-
this.logger.info(msg.type + ": " + json);
184-
}
185-
186-
const len = this.byteLength(json, "utf8");
187-
if (len < this.maxUncompressedMessageSize || !canCompressResponse) {
188-
this.host.write(`Content-Length: ${1 + this.byteLength(json, "utf8")}\r\n\r\n${json}${this.host.newLine}`);
189-
}
190-
else {
191-
const start = verboseLogging && this.hrtime();
192-
const compressed = this.compress(json);
193-
if (verboseLogging) {
194-
const elapsed = this.hrtime(start);
195-
this.logger.info(`compressed message ${json.length} to ${compressed.length} in ${hrTimeToMilliseconds(elapsed)} ms using ${compressed.compressionKind}`);
196-
}
197-
this.host.writeCompressedData(`Content-Length: ${compressed.length + 1} ${compressed.compressionKind}\r\n\r\n`, compressed, this.host.newLine);
198-
}
188+
public send(msg: protocol.Message) {
189+
this.host.write(formatMessage(msg, this.logger, this.byteLength, this.host.newLine));
199190
}
200191

201192
public configFileDiagnosticEvent(triggerFile: string, configFile: string, diagnostics: ts.Diagnostic[]) {
@@ -210,7 +201,7 @@ namespace ts.server {
210201
diagnostics: bakedDiags
211202
}
212203
};
213-
this.send(ev, /*canCompressResponse*/ false);
204+
this.send(ev);
214205
}
215206

216207
public event(info: any, eventName: string) {
@@ -220,10 +211,10 @@ namespace ts.server {
220211
event: eventName,
221212
body: info,
222213
};
223-
this.send(ev, /*canCompressResponse*/ false);
214+
this.send(ev);
224215
}
225216

226-
public output(info: any, cmdName: string, canCompressResponse: boolean, reqSeq = 0, errorMsg?: string) {
217+
public output(info: any, cmdName: string, reqSeq = 0, errorMsg?: string) {
227218
const res: protocol.Response = {
228219
seq: 0,
229220
type: "response",
@@ -237,7 +228,7 @@ namespace ts.server {
237228
else {
238229
res.message = errorMsg;
239230
}
240-
this.send(res, canCompressResponse);
231+
this.send(res);
241232
}
242233

243234
private getLocation(position: number, scriptInfo: ScriptInfo): protocol.Location {
@@ -1002,7 +993,7 @@ namespace ts.server {
1002993
this.changeSeq++;
1003994
// make sure no changes happen before this one is finished
1004995
if (project.reloadScript(file)) {
1005-
this.output(undefined, CommandNames.Reload, /*canCompressResponse*/ false, reqSeq);
996+
this.output(undefined, CommandNames.Reload, reqSeq);
1006997
}
1007998
}
1008999
}
@@ -1376,7 +1367,7 @@ namespace ts.server {
13761367
},
13771368
[CommandNames.Configure]: (request: protocol.ConfigureRequest) => {
13781369
this.projectService.setHostConfiguration(request.arguments);
1379-
this.output(undefined, CommandNames.Configure, /*canCompressResponse*/ false, request.seq);
1370+
this.output(undefined, CommandNames.Configure, request.seq);
13801371
return this.notRequired();
13811372
},
13821373
[CommandNames.Reload]: (request: protocol.ReloadRequest) => {
@@ -1446,7 +1437,7 @@ namespace ts.server {
14461437
}
14471438
else {
14481439
this.logger.msg(`Unrecognized JSON command: ${JSON.stringify(request)}`, Msg.Err);
1449-
this.output(undefined, CommandNames.Unknown, /*canCompressResponse*/ false, request.seq, `Unrecognized JSON command: ${request.command}`);
1440+
this.output(undefined, CommandNames.Unknown, request.seq, `Unrecognized JSON command: ${request.command}`);
14501441
return { responseRequired: false };
14511442
}
14521443
}
@@ -1477,23 +1468,22 @@ namespace ts.server {
14771468
}
14781469

14791470
if (response) {
1480-
this.output(response, request.command, request.canCompressResponse, request.seq);
1471+
this.output(response, request.command, request.seq);
14811472
}
14821473
else if (responseRequired) {
1483-
this.output(undefined, request.command, /*canCompressResponse*/ false, request.seq, "No content available.");
1474+
this.output(undefined, request.command, request.seq, "No content available.");
14841475
}
14851476
}
14861477
catch (err) {
14871478
if (err instanceof OperationCanceledException) {
14881479
// Handle cancellation exceptions
1489-
this.output({ canceled: true }, request.command, /*canCompressResponse*/ false, request.seq);
1480+
this.output({ canceled: true }, request.command, request.seq);
14901481
return;
14911482
}
14921483
this.logError(err, message);
14931484
this.output(
14941485
undefined,
14951486
request ? request.command : CommandNames.Unknown,
1496-
/*canCompressResponse*/ false,
14971487
request ? request.seq : 0,
14981488
"Error processing request. " + (<StackTraceError>err).message + "\n" + (<StackTraceError>err).stack);
14991489
}

0 commit comments

Comments
 (0)