test 4
This commit is contained in:
@@ -1524,23 +1524,26 @@ class VmixAgentHub:
|
||||
# semantics so diagnostics are still useful where exact field delivery matters.
|
||||
interactive_shortcut = bool(str(sequence_id or "").strip() or str(button_id or "").strip())
|
||||
delivery_mode = str(delivery_mode or "").strip().lower()
|
||||
fast_timer = delivery_mode == "timer-fast"
|
||||
fast_timer = delivery_mode in {"timer-fast", "timer-fast-ordered"}
|
||||
ordered_timer = delivery_mode == "timer-fast-ordered"
|
||||
no_ack_delivery = interactive_shortcut or fast_timer
|
||||
supports_batch = self._agent_supports_batch(agent_version) and len(prepared_commands) > 1
|
||||
use_batch = (not no_ack_delivery) and supports_batch
|
||||
if fast_timer:
|
||||
if ordered_timer:
|
||||
transport = "timer-ordered-no-ack"
|
||||
elif fast_timer:
|
||||
transport = "timer-batch-no-ack" if supports_batch else "timer-no-ack"
|
||||
else:
|
||||
transport = "shortcut-no-ack" if interactive_shortcut else ("batch" if use_batch else "legacy")
|
||||
|
||||
if no_ack_delivery:
|
||||
# BUILD103: realtime operator traffic (shortcuts + timers) bypasses Mapping's
|
||||
# ACK queue. Timer pairs use ONE vmix.batch frame on Agent 1.4+ and return
|
||||
# immediately after WebSocket delivery; the later Agent ACK is intentionally ignored.
|
||||
# The shared realtime lock preserves exact frame order if Space and an F-key are
|
||||
# pressed almost simultaneously without reintroducing the slow Mapping lock.
|
||||
# BUILD106: realtime operator traffic bypasses Mapping's ACK queue. The new
|
||||
# timer-fast-ordered mode deliberately sends each timer command as its own WebSocket
|
||||
# frame in strict order (Stop -> Set -> Start) and never waits for Agent/vMix ACK.
|
||||
# Legacy timer-fast keeps vmix.batch compatibility. The shared realtime lock prevents
|
||||
# interleaving with F-key traffic without reintroducing the slow Mapping lock.
|
||||
async with self._device_vmix_shortcut_send_lock(target_device_id):
|
||||
if fast_timer and supports_batch:
|
||||
if fast_timer and supports_batch and not ordered_timer:
|
||||
request_id = secrets.token_urlsafe(12)
|
||||
delivered = await self.send(
|
||||
target_device_id,
|
||||
|
||||
Reference in New Issue
Block a user