OpenAsar/core/src/app/discord_native/renderer/processUtils.js

98 lines
3.7 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.flushCookies = flushCookies;
exports.flushDNSCache = flushDNSCache;
exports.flushStorageData = flushStorageData;
exports.getCPUCoreCount = getCPUCoreCount;
exports.getCurrentCPUUsagePercent = getCurrentCPUUsagePercent;
exports.getCurrentMemoryUsageKB = getCurrentMemoryUsageKB;
exports.getLastCrash = getLastCrash;
exports.getMainArgvSync = getMainArgvSync;
exports.getSystemInfo = getSystemInfo;
exports.purgeMemory = purgeMemory;
exports.setCrashInformation = setCrashInformation;
var _electron = _interopRequireDefault(require("electron"));
var _os = _interopRequireDefault(require("os"));
var _process = _interopRequireDefault(require("process"));
var _DiscordIPC = require("../common/DiscordIPC");
var _minidumpReader = require("./minidumpReader");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// Note: CPU interval should be kept insync with Android's DeviceResourceUsageMonitor interval.
const CPU_USAGE_GATHER_INTERVAL = 1000;
const MEMORY_USAGE_GATHER_INTERVAL = 5000;
const mainArgv = _DiscordIPC.DiscordIPC.renderer.sendSync(_DiscordIPC.IPCEvents.PROCESS_UTILS_GET_MAIN_ARGV_SYNC);
let totalProcessorUsagePercent = 0;
let totalMemoryUsageKB = 0;
const cpuCoreCount = _os.default.cpus().length;
setInterval(() => {
_DiscordIPC.DiscordIPC.renderer.invoke(_DiscordIPC.IPCEvents.PROCESS_UTILS_GET_CPU_USAGE).then(usage => totalProcessorUsagePercent = usage);
}, CPU_USAGE_GATHER_INTERVAL);
let memoryUsageTimerRunning = false;
function getCurrentMemoryUsageKB() {
// Lazy initialize because this is only needed when the native process_utils are not available/updated.
if (memoryUsageTimerRunning) {
return totalMemoryUsageKB;
}
memoryUsageTimerRunning = true;
function computeMemoryUsage() {
const memoryUsage = _process.default.memoryUsage();
return (memoryUsage.heapTotal + memoryUsage.external) / 1024;
}
setInterval(() => {
totalMemoryUsageKB = computeMemoryUsage();
}, MEMORY_USAGE_GATHER_INTERVAL);
totalMemoryUsageKB = computeMemoryUsage();
return totalMemoryUsageKB;
}
function flushDNSCache() {
return _DiscordIPC.DiscordIPC.renderer.invoke(_DiscordIPC.IPCEvents.PROCESS_UTILS_FLUSH_DNS_CACHE);
}
async function getLastCrash() {
const lastCrash = await _DiscordIPC.DiscordIPC.renderer.invoke(_DiscordIPC.IPCEvents.PROCESS_UTILS_GET_LAST_CRASH);
const minidumpInformation = lastCrash.id != null ? await (0, _minidumpReader.getNewestMinidumpInformation)() : null;
return {
date: lastCrash.date,
id: lastCrash.id,
rendererCrashReason: lastCrash.rendererCrashReason,
rendererCrashExitCode: lastCrash.rendererCrashExitCode,
minidumpInformation,
storedInformation: lastCrash.storedInformation
};
}
async function flushCookies(callback) {
try {
await _DiscordIPC.DiscordIPC.renderer.invoke(_DiscordIPC.IPCEvents.PROCESS_UTILS_FLUSH_COOKIES);
callback();
} catch (err) {
callback(err);
}
}
function getSystemInfo() {
return _DiscordIPC.DiscordIPC.renderer.invoke(_DiscordIPC.IPCEvents.PROCESS_UTILS_GET_SYSTEM_INFO);
}
async function flushStorageData(callback) {
try {
await _DiscordIPC.DiscordIPC.renderer.invoke(_DiscordIPC.IPCEvents.PROCESS_UTILS_FLUSH_STORAGE_DATA);
callback();
} catch (err) {
callback(err);
}
}
function purgeMemory() {
_electron.default.webFrame.clearCache();
}
function getCurrentCPUUsagePercent() {
return totalProcessorUsagePercent;
}
function getCPUCoreCount() {
return cpuCoreCount;
}
function getMainArgvSync() {
return mainArgv;
}
function setCrashInformation(crashInformation, state) {
_DiscordIPC.DiscordIPC.renderer.invoke(_DiscordIPC.IPCEvents.PROCESS_UTILS_SET_CRASH_INFORMATION, crashInformation, state);
}