Cameras on devices (openpanel C1): frames in memory, a binary uplink, demand
- Volatile frames are held in memory with a byte-bounded queue instead of the /dev/shm ring scanned on every put; workers keep writing to the directory, which is trimmed on a timer. A volatile upload no longer spools to disk. ARTIFACT_VOLATILE_BYTES=0 turns the ring off. - A device sends camera frames as binary messages on its socket, held and published in one step and credited to its device node; refused frames are logged and dropped. Its snapshot carries demand and the uplink (binary, or http through the portal). - One demand registry for every socket's wanted media, the tunnel's included, plus what running flows read, mapped onto on-demand ports and published as device_demand; at most 8 media names per socket. - Per-message deflate off in serve and dev; a device may fetch the last 8 digests of a message; published dashboards cached per store revision; a revoked device socket is closed with 1008. - Media tiles want bytes only while on screen; the Devices tab previews a wired camera; the device node warns when a flow reads an on-demand port.
This commit is contained in:
@@ -2,7 +2,6 @@ import asyncio
|
||||
from datetime import UTC, datetime
|
||||
|
||||
import pytest
|
||||
from fastapi import WebSocketDisconnect
|
||||
from fastapi.testclient import TestClient
|
||||
from sqlalchemy import func
|
||||
from sqlmodel import Session, select
|
||||
@@ -538,10 +537,10 @@ async def test_the_live_socket_ends_when_its_client_goes(
|
||||
async def send_text(self, text: str) -> None:
|
||||
self.sent.append(text)
|
||||
|
||||
async def receive_text(self) -> str:
|
||||
async def receive(self) -> dict[str, object]:
|
||||
if self.frames:
|
||||
return self.frames.pop(0)
|
||||
raise WebSocketDisconnect(1006)
|
||||
return {"type": "websocket.receive", "text": self.frames.pop(0)}
|
||||
return {"type": "websocket.disconnect", "code": 1006}
|
||||
|
||||
peer = Peer()
|
||||
subscribed = len(event_bus._subscribers)
|
||||
|
||||
Reference in New Issue
Block a user