21
22
dispose() {
24
buffer.dispose();
25
}
27
28
startBuffering(id: number, event: Event<string | IProcessDataEvent>, throttleBy: number = 5): IDisposable {
30
>
const disposable = event((e: string | IProcessDataEvent) => {
31
>
const data = isString(e) ? e : e.data;
32
>
let buffer = this._terminalBufferMap.get(id);
33
>
if (buffer) {
34
>
buffer.data.push(data);
35
>
return;
36
>
}
37
>
38
>
const timeoutId = setTimeout(() => this.flushBuffer(id), throttleBy);
39
>
buffer = {
40
>
data: [data],
41
>
timeoutId,
42
>
dispose: () => {
43
clearTimeout(timeoutId);
44
this.flushBuffer(id);
45
disposable.dispose();
46
}
48
>
this._terminalBufferMap.set(id, buffer);
49
>
});
50
>
return disposable;
51
>
}
52
53
stopBuffering(id: number) {