Skip to content

Commit c537df0

Browse files
committed
evolve to progressive metrics patching
1 parent 80e77c3 commit c537df0

File tree

3 files changed

+37
-50
lines changed

3 files changed

+37
-50
lines changed

src/api-monitor-cs-main.ts

Lines changed: 28 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
import { EMsg, windowListen, windowPost } from './api/communication.ts';
22
import { IS_DEV } from './api/env.ts';
3-
import { TELEMETRY_FREQUENCY_1PS } from './api/const.ts';
4-
import { adjustTelemetryDelay, Stopper, Timer } from './api/time.ts';
3+
import {
4+
TELEMETRY_FREQUENCY_1PS,
5+
TELEMETRY_FREQUENCY_30PS,
6+
} from './api/const.ts';
7+
import { adjustTelemetryDelay, Timer } from './api/time.ts';
58
import {
69
onEachSecond,
710
setSettings,
@@ -13,76 +16,63 @@ import {
1316
} from './wrapper/Wrapper.ts';
1417
import diff from './api/diff.ts';
1518

16-
let original: TTelemetry | null;
17-
let resetOriginalWhen = 0;
18-
const resetOriginalNow = 5;
19+
let originalMetrics: TTelemetry | null;
20+
let currentMetrics: TTelemetry | null;
1921
const eachSecond = new Timer({ delay: 1e3, repetitive: true }, () => {
2022
onEachSecond();
21-
22-
if (++resetOriginalWhen === resetOriginalNow) {
23-
original = null;
24-
resetOriginalWhen = 0;
25-
}
2623
});
27-
const metricsStopper = new Stopper();
28-
const diffStopper = new Stopper();
2924
const tick = new Timer(
30-
{ delay: TELEMETRY_FREQUENCY_1PS, repetitive: true },
25+
{ delay: TELEMETRY_FREQUENCY_1PS, repetitive: false },
3126
function apiMonitorTelemetryTick() {
3227
const now = Date.now();
28+
currentMetrics = structuredClone(collectMetrics());
3329

34-
// @ts-ignore
35-
window.stoppers = [
36-
Stopper.toString(metricsStopper.value()),
37-
Stopper.toString(diffStopper.value()),
38-
];
39-
40-
if (!original) {
41-
metricsStopper.start();
42-
const current = collectMetrics();
43-
original = structuredClone(current);
44-
metricsStopper.stop();
30+
if (!originalMetrics) {
31+
originalMetrics = currentMetrics;
4532

4633
windowPost({
4734
msg: EMsg.TELEMETRY,
4835
timeOfCollection: now,
49-
telemetry: original,
36+
telemetry: originalMetrics,
5037
});
5138
} else {
52-
diffStopper.start();
53-
const current = collectMetrics();
54-
const delta = diff.diff(original, current);
55-
diffStopper.stop();
39+
const delta = diff.diff(originalMetrics, currentMetrics);
5640

57-
if (!delta) {
58-
return;
41+
if (delta) {
42+
windowPost({
43+
msg: EMsg.TELEMETRY,
44+
timeOfCollection: now,
45+
telemetryDelta: delta,
46+
});
47+
} else {
48+
tick.delay = TELEMETRY_FREQUENCY_30PS;
49+
tick.start();
5950
}
60-
61-
windowPost({
62-
msg: EMsg.TELEMETRY,
63-
timeOfCollection: now,
64-
telemetryDelta: delta,
65-
});
6651
}
6752
}
6853
);
6954

7055
windowListen((o) => {
7156
if (o.msg === EMsg.TELEMETRY_ACKNOWLEDGED) {
7257
tick.delay = adjustTelemetryDelay(o.timeOfCollection);
58+
originalMetrics = currentMetrics;
59+
tick.start();
7360
} else if (
7461
o.msg === EMsg.SETTINGS &&
7562
o.settings &&
7663
typeof o.settings === 'object'
7764
) {
7865
setSettings(o.settings);
7966
} else if (o.msg === EMsg.START_OBSERVE) {
80-
tick.start();
67+
originalMetrics = null;
68+
tick.trigger();
8169
eachSecond.start();
8270
} else if (o.msg === EMsg.STOP_OBSERVE) {
8371
tick.stop();
8472
eachSecond.stop();
73+
originalMetrics = currentMetrics = null;
8574
} else if (o.msg === EMsg.RESET_WRAPPER_HISTORY) {
75+
originalMetrics = null;
8676
cleanHistory();
8777
!tick.isPending && tick.trigger();
8878
} else if (o.msg === EMsg.TIMER_COMMAND) {

src/api/hash.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,7 @@ import { bytesToHex } from '@noble/hashes/utils';
44
const HASH_STRING_LENGTH = 64;
55

66
export function hashString(str: string) {
7-
if (str.length > HASH_STRING_LENGTH) {
8-
return bytesToHex(sha256(str));
9-
}
10-
11-
return str;
7+
return (
8+
(str.length - HASH_STRING_LENGTH > 0 && bytesToHex(sha256(str))) || str
9+
);
1210
}

src/view/App.svelte

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
let autopauseAlertEl: Alert | null = $state.raw(null);
2626
let paused = $state.raw(false);
2727
let telemetry: TTelemetry | null = $state.raw(null);
28-
let telemetryFullCopy: TTelemetry | null = null;
28+
let telemetryProgressive: TTelemetry | null = null;
2929
3030
runtimeListen((o) => {
3131
if (o.msg === EMsg.CONTENT_SCRIPT_LOADED) {
@@ -35,13 +35,12 @@
3535
}
3636
});
3737
} else if (o.msg === EMsg.TELEMETRY) {
38-
if (o.telemetryDelta && telemetry) {
39-
telemetry = <TTelemetry>(
40-
diff.patch(structuredClone(telemetryFullCopy), o.telemetryDelta)
41-
);
42-
} else if (o.telemetry) {
38+
if (o.telemetry) {
39+
telemetryProgressive = structuredClone(o.telemetry);
4340
telemetry = o.telemetry;
44-
telemetryFullCopy = structuredClone(o.telemetry);
41+
} else if (o.telemetryDelta) {
42+
diff.patch(telemetryProgressive, o.telemetryDelta);
43+
telemetry = structuredClone(telemetryProgressive);
4544
}
4645
4746
if (shouldAutopause(o.timeOfCollection)) {

0 commit comments

Comments
 (0)