forked from y-scope/yscope-log-viewer
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLogFileManagerProxy.ts
More file actions
90 lines (76 loc) · 2.72 KB
/
LogFileManagerProxy.ts
File metadata and controls
90 lines (76 loc) · 2.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
import {Nullable} from "../typings/common";
import {DecoderOptions} from "../typings/decoders";
import {LogLevelFilter} from "../typings/logs";
import {QueryResults} from "../typings/query";
import {
CursorType,
FileSrcType,
LogFileInfo,
PageData,
} from "../typings/worker";
import LogFileManager from "./LogFileManager";
class LogFileManagerProxy {
logFileManager: Nullable<LogFileManager> = null;
async loadFile (
{decoderOptions, fileSrc, pageSize}: {
decoderOptions: DecoderOptions;
fileSrc: FileSrcType;
pageSize: number;
},
onExportChunk: (logs: string) => void,
onQueryResults: (queryProgress: number, queryResults: QueryResults) => void,
): Promise<LogFileInfo> {
const logFileManager = await LogFileManager.create({
decoderOptions: decoderOptions,
fileSrc: fileSrc,
onExportChunk: onExportChunk,
onQueryResults: onQueryResults,
pageSize: pageSize,
});
this.logFileManager = logFileManager;
return {
fileName: logFileManager.fileName,
fileTypeInfo: logFileManager.fileTypeInfo,
metadata: logFileManager.metadata,
numEvents: logFileManager.numEvents,
onDiskFileSizeInBytes: logFileManager.onDiskFileSizeInBytes,
};
}
loadPage (cursor: CursorType): PageData {
const logFileManager = this.#getLogFileManager();
return logFileManager.loadPage(cursor);
}
setFilter (
cursor: CursorType,
logLevelFilter: LogLevelFilter
): PageData {
const logFileManager = this.#getLogFileManager();
logFileManager.setLogLevelFilter(logLevelFilter);
return this.loadPage(cursor);
}
setIsPrettified (isPrettified: boolean): void {
const logFileManager = this.#getLogFileManager();
logFileManager.setIsPrettified(isPrettified);
}
exportLogs (): void {
const logFileManager = this.#getLogFileManager();
logFileManager.exportChunkAndScheduleNext(0);
}
startQuery (queryString: string, isRegex: boolean, isCaseSensitive: boolean): void {
const logFileManager = this.#getLogFileManager();
logFileManager.startQuery({queryString, isRegex, isCaseSensitive});
}
/**
* Gets the current log file manager.
*
* @return The current log file manager.
* @throws {Error} If the log file manager hasn't been initialized.
*/
#getLogFileManager (): LogFileManager {
if (null === this.logFileManager) {
throw new Error("LogFileManager hasn't been initialized");
}
return this.logFileManager;
}
}
export {LogFileManagerProxy};