1
>
/*---------------------------------------------------------------------------------------------
ipc.net.ts
2
>
* Copyright (c) Microsoft Corporation. All rights reserved.
3
>
* Licensed under the MIT License. See License.txt in the project root for license information.
4
>
*--------------------------------------------------------------------------------------------*/
5
>
6
>
import { VSBuffer } from '../../../common/buffer.js';
7
>
import { Emitter, Event } from '../../../common/event.js';
8
>
import { Disposable, DisposableStore, IDisposable } from '../../../common/lifecycle.js';
9
>
import { IIPCLogger, IMessagePassingProtocol, IPCClient } from './ipc.js';
10
>
11
>
export const enum SocketDiagnosticsEventType {
12
>
Created = 'created',
13
>
Read = 'read',
14
>
Write = 'write',
15
>
Open = 'open',
16
>
Error = 'error',
17
>
Close = 'close',
18
>
19
>
BrowserWebSocketBlobReceived = 'browserWebSocketBlobReceived',
20
>
21
>
NodeEndReceived = 'nodeEndReceived',
22
>
NodeEndSent = 'nodeEndSent',
23
>
NodeDrainBegin = 'nodeDrainBegin',
24
>
NodeDrainEnd = 'nodeDrainEnd',
25
>
26
>
zlibInflateError = 'zlibInflateError',
27
>
zlibInflateData = 'zlibInflateData',
28
>
zlibInflateInitialWrite = 'zlibInflateInitialWrite',
29
>
zlibInflateInitialFlushFired = 'zlibInflateInitialFlushFired',
30
>
zlibInflateWrite = 'zlibInflateWrite',
31
>
zlibInflateFlushFired = 'zlibInflateFlushFired',
32
>
zlibDeflateError = 'zlibDeflateError',
33
>
zlibDeflateData = 'zlibDeflateData',
34
>
zlibDeflateWrite = 'zlibDeflateWrite',
35
>
zlibDeflateFlushFired = 'zlibDeflateFlushFired',
36
>
37
>
WebSocketNodeSocketWrite = 'webSocketNodeSocketWrite',
38
>
WebSocketNodeSocketPeekedHeader = 'webSocketNodeSocketPeekedHeader',
39
>
WebSocketNodeSocketReadHeader = 'webSocketNodeSocketReadHeader',
40
>
WebSocketNodeSocketReadData = 'webSocketNodeSocketReadData',
41
>
WebSocketNodeSocketUnmaskedData = 'webSocketNodeSocketUnmaskedData',
42
>
WebSocketNodeSocketDrainBegin = 'webSocketNodeSocketDrainBegin',
43
>
WebSocketNodeSocketDrainEnd = 'webSocketNodeSocketDrainEnd',
44
>
45
>
ProtocolHeaderRead = 'protocolHeaderRead',
46
>
ProtocolMessageRead = 'protocolMessageRead',
47
>
ProtocolHeaderWrite = 'protocolHeaderWrite',
48
>
ProtocolMessageWrite = 'protocolMessageWrite',
49
>
ProtocolWrite = 'protocolWrite',
50
>
}
51
>
52
>
export namespace SocketDiagnostics {
53
>
54
>
export const enableDiagnostics = false;
55
>
56
>
export interface IRecord {
57
>
timestamp: number;
58
>
id: string;
59
>
label: string;
60
>
type: SocketDiagnosticsEventType;
61
>
buff?: VSBuffer;
62
>
data?: any;
63
>
}
64
>
65
>
export const records: IRecord[] = [];
66
>
const socketIds = new WeakMap<any, string>();
67
>
let lastUsedSocketId = 0;
68
>
69
>
function getSocketId(nativeObject: unknown, label: string): string {
70
if (!socketIds.has(nativeObject)) {
71
const id = String(++lastUsedSocketId);