replay: delay per complete frame instead of per chunk
ReplayPacer (MsgListener+MsgTalker) sits between packetizer output and downstream listeners; sleeps after each complete NMEA/UBX frame before forwarding. FileBackend no longer owns the delay — it reads as fast as possible and the pacer provides back-pressure on the same thread. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
import time
|
||||
from msg.listener import MsgListener
|
||||
from msg.talker import MsgTalker
|
||||
from msg.container import MsgContainer
|
||||
|
||||
|
||||
class ReplayPacer(MsgListener, MsgTalker):
|
||||
"""Sits between a packetizer and its listeners; sleeps after each
|
||||
complete frame so file replay runs at a controlled rate."""
|
||||
|
||||
def __init__(self, delay: float = 1.0):
|
||||
MsgListener.__init__(self)
|
||||
MsgTalker.__init__(self)
|
||||
self.delay = delay
|
||||
|
||||
def is_msg(self, msg: MsgContainer) -> bool:
|
||||
return True
|
||||
|
||||
def on_recv(self, msg: MsgContainer):
|
||||
if self.delay > 0:
|
||||
time.sleep(self.delay)
|
||||
self.call_listener(msg)
|
||||
Reference in New Issue
Block a user