feat(media-streaming): deepen telemetry, ledger, and orchestrator

Session history and stall ranking, contribution percentile snapshots,
enterprise region SLA helpers, and latency target configuration.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
Raven Scott
2026-05-21 02:31:03 -04:00
co-authored by Cursor
parent 4b65b75327
commit 4f01d2231a
5 changed files with 57 additions and 2 deletions
@@ -58,6 +58,23 @@ class HyperP2PContributionLedger extends EventEmitter {
return this._ledger.delete(assertPeerId(peerId)) return this._ledger.delete(assertPeerId(peerId))
} }
rankPercentile (peerId) {
const id = assertPeerId(peerId)
const bal = this.balance(id)
const all = [...this._ledger.values()].map((r) => r.bytes).sort((a, b) => a - b)
if (!all.length) return 0
const below = all.filter((b) => b < bal).length
return below / all.length
}
toSnapshot () {
return [...this._ledger.values()].map((r) => ({
peerId: r.peerId,
bytes: r.bytes,
streams: [...r.streams]
}))
}
_gossip (payload) { _gossip (payload) {
if (this._peerMsgs) { if (this._peerMsgs) {
gossipSend(this, payload) gossipSend(this, payload)
@@ -81,6 +81,20 @@ class HyperP2PEnterpriseOrchestrator extends EventEmitter {
return n return n
} }
removeRegion (region) {
return this._regions.delete(String(region))
}
setSla ({ targetUptime, maxStallRate } = {}) {
if (targetUptime != null) this._sla.targetUptime = targetUptime
if (maxStallRate != null) this._sla.maxStallRate = maxStallRate
return { ...this._sla }
}
regionNames () {
return [...this._regions.keys()]
}
getStats () { getStats () {
return mediaStats(this._stats, PROTOCOL, { regions: this._regions.size }) return mediaStats(this._stats, PROTOCOL, { regions: this._regions.size })
} }
@@ -72,6 +72,11 @@ class HyperP2PLatencyOptimizer extends EventEmitter {
return glass <= this.targetGlassMs return glass <= this.targetGlassMs
} }
setTargetGlassMs (ms) {
this.targetGlassMs = Math.max(100, ms | 0)
return this.targetGlassMs
}
getStats () { getStats () {
return mediaStats(this._stats, PROTOCOL, { paths: this._paths.size }) return mediaStats(this._stats, PROTOCOL, { paths: this._paths.size })
} }
@@ -77,6 +77,25 @@ class HyperP2PStreamTelemetry extends EventEmitter {
return [...this._sessions.keys()] return [...this._sessions.keys()]
} }
history (sessionId, limit = 32) {
const hist = this._sessions.get(String(sessionId))
if (!hist) return []
return hist.slice(-Math.max(0, limit | 0))
}
clearSession (sessionId) {
return this._sessions.delete(String(sessionId))
}
worstStalls (limit = 5) {
const ranked = []
for (const [sessionId, hist] of this._sessions) {
const stalls = hist.reduce((s, h) => s + h.stallCount, 0)
ranked.push({ sessionId, stalls })
}
return ranked.sort((a, b) => b.stalls - a.stalls).slice(0, limit)
}
getStats () { getStats () {
return mediaStats(this._stats, PROTOCOL, { sessions: this._sessions.size }) return mediaStats(this._stats, PROTOCOL, { sessions: this._sessions.size })
} }
@@ -1,12 +1,12 @@
{ {
"name": "hyper-p2p-stream-telemetry", "name": "hyper-p2p-stream-telemetry",
"version": "0.0.0-scaffold", "version": "0.3.1",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "hyper-p2p-stream-telemetry", "name": "hyper-p2p-stream-telemetry",
"version": "0.0.0-scaffold", "version": "0.3.1",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"b4a": "^1.6.7", "b4a": "^1.6.7",