decord/source/modules/gateway/BasicWorkScheduler.tsx

209 lines
7.1 KiB
TypeScript
Raw Normal View History

2026-07-28 08:39:19 +00:00
// Module ID: 12681
// Function ID: 97945
2026-07-20 16:05:17 +00:00
// Name: BasicWorkScheduler
2026-07-28 08:39:19 +00:00
// Dependencies: [6, 7, 12679, 3, 12682, 44, 2]
2026-07-20 16:05:17 +00:00
2026-07-28 08:39:19 +00:00
// Module 12681 (BasicWorkScheduler)
2026-07-23 10:11:24 +00:00
import set from "set";
import _defineProperties from "_defineProperties";
import WorkIdleDeadline from "WorkIdleDeadline";
import importDefaultResult from "timestamp";
let closure_5;
let closure_6;
let closure_7;
let closure_8;
const require = arg1;
({ MAX_DISPATCHER_FLUSH_DEADLINE_TRIES: closure_5, DISPATCHER_STANDARD_TIMEOUT_MS: closure_6, DISPATCHER_IDEAL_TIME_LIMIT_MS: closure_7, DISPATCHER_LONG_TIMEOUT_MS: closure_8 } = WorkIdleDeadline);
2026-07-20 16:05:17 +00:00
importDefaultResult = new importDefaultResult("DispatcherWorkScheduler");
2026-07-23 10:11:24 +00:00
const tmp5 = (() => {
2026-07-20 16:05:17 +00:00
class BasicWorkScheduler {
constructor() {
2026-07-23 10:11:24 +00:00
tmp = outer1_3(this, BasicWorkScheduler);
2026-07-20 16:05:17 +00:00
this._flushTimeoutHandler = null;
this._flushIdleHandler = null;
2026-07-23 10:11:24 +00:00
this._nextDispatchTimeout = outer1_6;
2026-07-20 16:05:17 +00:00
this._workCallbackFn = null;
this._consecutiveFlushesBeforeQueueEmpty = 0;
this._isBackgrounded = false;
this._enableRequestIdleCallback = true;
this._criticalWorkScheduled = false;
2026-07-23 10:11:24 +00:00
workSchedulerTelemetry = new BasicWorkScheduler(outer1_2[4]).WorkSchedulerTelemetry();
2026-07-20 16:05:17 +00:00
this.telemetry = workSchedulerTelemetry;
2026-07-23 10:11:24 +00:00
this._logger = outer1_9;
2026-07-20 16:05:17 +00:00
return;
}
}
let obj = {
key: "_trackAppBackgrounded",
value(_isBackgrounded) {
const self = this;
if (this._isBackgrounded !== _isBackgrounded) {
self._isBackgrounded = _isBackgrounded;
if (tmp) {
const telemetry = self.telemetry;
2026-07-23 10:11:24 +00:00
telemetry.track(BasicWorkScheduler(outer1_2[4]).WorkSchedulerTelemetryEvent.SKIP_IDLE_CALLBACK_DUE_TO_BACKGROUNDED);
2026-07-20 16:05:17 +00:00
self._processWorkCallback();
}
2026-07-23 10:11:24 +00:00
tmp = self._isBackgrounded && self.hasWorkScheduled;
2026-07-20 16:05:17 +00:00
}
}
};
const items = [obj, , , , , , , , , , , ];
obj = {
key: "_queueIdleCallback",
value() {
const error = new Error("Not implemented");
throw error;
}
};
items[1] = obj;
obj = {
key: "_clearIdleCallback",
value() {
const error = new Error("Not implemented");
throw error;
}
};
items[2] = obj;
items[3] = {
key: "_hasExceededMaxConsecutiveFlushes",
get() {
2026-07-23 10:11:24 +00:00
return this._consecutiveFlushesBeforeQueueEmpty >= outer1_5;
2026-07-20 16:05:17 +00:00
}
};
items[4] = {
key: "_processWorkCallback",
value(arg0) {
const self = this;
if (null != this._workCallbackFn) {
if (self._hasExceededMaxConsecutiveFlushes) {
2026-07-23 10:11:24 +00:00
outer1_9.log("Unable to fully flush work queue after max retries, skipping future deadline.");
2026-07-20 16:05:17 +00:00
self._workCallbackFn();
self.clearWorkTimeout();
const telemetry2 = self.telemetry;
2026-07-23 10:11:24 +00:00
telemetry2.measure(BasicWorkScheduler(outer1_2[4]).WorkSchedulerTelemetryMeasurement.COUNT_FLUSH_BEFORE_QUEUE_EMPTY, self._consecutiveFlushesBeforeQueueEmpty);
2026-07-20 16:05:17 +00:00
const telemetry3 = self.telemetry;
2026-07-23 10:11:24 +00:00
telemetry3.track(BasicWorkScheduler(outer1_2[4]).WorkSchedulerTelemetryEvent.EXCEEDED_MAX_CONSECUTIVE_FLUSHES);
2026-07-20 16:05:17 +00:00
self._consecutiveFlushesBeforeQueueEmpty = 0;
2026-07-23 10:11:24 +00:00
self._nextDispatchTimeout = outer1_8;
2026-07-20 16:05:17 +00:00
} else {
const _performance = performance;
const _performance2 = performance;
const nowResult = performance.now();
const _workCallbackFnResult1 = self._workCallbackFn(arg0);
self.clearWorkTimeout();
2026-07-23 10:11:24 +00:00
self._nextDispatchTimeout = performance.now() - nowResult > outer1_7 ? outer1_8 : outer1_6;
2026-07-20 16:05:17 +00:00
const _consecutiveFlushesBeforeQueueEmpty = self._consecutiveFlushesBeforeQueueEmpty;
if (_workCallbackFnResult1) {
if (_consecutiveFlushesBeforeQueueEmpty > 0) {
const telemetry = self.telemetry;
const _parseInt = parseInt;
const _HermesInternal = HermesInternal;
2026-07-23 10:11:24 +00:00
telemetry.measure(BasicWorkScheduler(outer1_2[4]).WorkSchedulerTelemetryMeasurement.COUNT_FLUSH_BEFORE_QUEUE_EMPTY, parseInt("" + self._consecutiveFlushesBeforeQueueEmpty));
2026-07-20 16:05:17 +00:00
}
self._consecutiveFlushesBeforeQueueEmpty = 0;
self._criticalWorkScheduled = false;
} else {
self._consecutiveFlushesBeforeQueueEmpty = _consecutiveFlushesBeforeQueueEmpty + 1;
}
const nowResult1 = performance.now();
}
}
}
};
items[5] = {
key: "markCriticalWorkScheduled",
value() {
const self = this;
this._criticalWorkScheduled = true;
if (null != this._flushIdleHandler) {
self._clearIdleCallback();
self._processWorkCallback();
}
}
};
items[6] = {
key: "toggleRequestIdleCallback",
value(_enableRequestIdleCallback) {
const self = this;
this._enableRequestIdleCallback = _enableRequestIdleCallback;
if (tmp) {
self._clearIdleCallback();
self._processWorkCallback();
}
}
};
items[7] = {
key: "isBackgrounded",
get() {
return this._isBackgrounded;
}
};
items[8] = {
key: "hasWorkScheduled",
get() {
return null != this._flushTimeoutHandler || null != this._flushIdleHandler;
}
};
items[9] = {
key: "isRequestIdleCallbackEnabled",
get() {
return this._enableRequestIdleCallback;
}
};
items[10] = {
key: "clearWorkTimeout",
value() {
const self = this;
if (null != this._flushTimeoutHandler) {
const _clearTimeout = clearTimeout;
clearTimeout(self._flushTimeoutHandler);
self._flushTimeoutHandler = null;
}
self._clearIdleCallback();
2026-07-23 10:11:24 +00:00
self._nextDispatchTimeout = outer1_6;
2026-07-20 16:05:17 +00:00
self._workCallbackFn = null;
}
};
items[11] = {
key: "requestWorkTimeout",
value(_workCallbackFn) {
let flag = arg1;
2026-07-23 10:11:24 +00:00
let self = this;
self = this;
2026-07-20 16:05:17 +00:00
if (arg1 === undefined) {
flag = false;
}
self._workCallbackFn = _workCallbackFn;
if (!self.hasWorkScheduled) {
2026-07-23 10:11:24 +00:00
let telemetry = self.telemetry;
telemetry.time(BasicWorkScheduler(outer1_2[4]).WorkSchedulerTelemetryTiming.TIME_TO_QUEUE_EMPTY);
if (self._nextDispatchTimeout === outer1_8) {
2026-07-20 16:05:17 +00:00
const telemetry2 = self.telemetry;
2026-07-23 10:11:24 +00:00
telemetry2.track(BasicWorkScheduler(outer1_2[4]).WorkSchedulerTelemetryEvent.LONGER_DISPATCH);
2026-07-20 16:05:17 +00:00
}
if (flag) {
self._queueIdleCallback();
} else {
const _setTimeout = setTimeout;
self._flushTimeoutHandler = setTimeout(() => {
2026-07-23 10:11:24 +00:00
outer2_1(outer2_2[5])(null != self._workCallbackFn, "Work callback should be set");
2026-07-20 16:05:17 +00:00
if (self._isBackgrounded) {
const telemetry = obj.telemetry;
2026-07-23 10:11:24 +00:00
telemetry.track(BasicWorkScheduler(outer2_2[4]).WorkSchedulerTelemetryEvent.SKIP_IDLE_CALLBACK_DUE_TO_BACKGROUNDED);
2026-07-20 16:05:17 +00:00
return obj._processWorkCallback();
} else {
obj._queueIdleCallback();
}
}, self._nextDispatchTimeout);
}
}
}
};
return callback(BasicWorkScheduler, items);
2026-07-23 10:11:24 +00:00
})();
const result = require("WorkIdleDeadline").fileFinishedImporting("modules/gateway/BasicWorkScheduler.tsx");
2026-07-20 16:05:17 +00:00
export const BasicWorkScheduler = tmp5;