mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-11-05 08:44:32 +01:00
hardware protocol v2: answer a subscription with current state
The snapshot sent right after SUBSCRIBE was taken from the previous frame, which on the first frame of a session meant every value came back as UNAVAILABLE. The link now publishes the state of the current frame before the received frames are processed.
This commit is contained in:
@@ -202,6 +202,9 @@ void hardware_link::update( double const Deltatime, state_snapshot const &Snapsh
|
|||||||
m_lastframeerrors = counters;
|
m_lastframeerrors = counters;
|
||||||
m_session.add_frame_errors( delta );
|
m_session.add_frame_errors( delta );
|
||||||
|
|
||||||
|
// the session answers a subscription with an immediate snapshot, so it needs the current state first
|
||||||
|
m_session.set_snapshot( Snapshot );
|
||||||
|
|
||||||
for( auto const &packet : packets )
|
for( auto const &packet : packets )
|
||||||
{
|
{
|
||||||
m_session.handle_packet( packet );
|
m_session.handle_packet( packet );
|
||||||
|
|||||||
@@ -49,6 +49,8 @@ public:
|
|||||||
void reset();
|
void reset();
|
||||||
// consumes one decoded frame
|
// consumes one decoded frame
|
||||||
void handle_packet( decoded_packet const &Packet );
|
void handle_packet( decoded_packet const &Packet );
|
||||||
|
// publishes the state of the current simulation frame, before the received frames are processed
|
||||||
|
void set_snapshot( state_snapshot const &Snapshot ) { m_snapshot = Snapshot; }
|
||||||
// periodic work: heartbeats, subscription updates, timeouts
|
// periodic work: heartbeats, subscription updates, timeouts
|
||||||
void update( double const Deltatime, state_snapshot const &Snapshot );
|
void update( double const Deltatime, state_snapshot const &Snapshot );
|
||||||
// copies the current condition into the debug report
|
// copies the current condition into the debug report
|
||||||
|
|||||||
Reference in New Issue
Block a user