- If a donut has been idle for more than DONUT_THRESHOLD_LIFETIME_MS ms and there are more than DONUT_THRESHOLD_COUNT donuts at the booth, send a message to the sound system to trigger the logout sound.
- If a donut has been idle for more than DONUT_IDLE_LIFETIME_MS ms, remove it entirely.
- If a donut reappears after DONUT_THRESHOLD_LIFETIME_MS ms but before DONUT_IDLE_LIFETIME_MS ms, refresh its status so that it can be logged out if it is idle for another DONUT_THRESHOLD_LIFETIME_MS ms.
- Listen to donut login instructions from other booths on port DONUT_LOGIN_PORT. Also use this port to inform other booths of logins. Hence class FiducialOscServer becomes FiducialOscClientServer (it was actually a client).
- Similarly, class LogicOscClient becomes LogicOscClientServer, because it listens to booth login information on port DONUT_LOGIN_PORT.
- Update the test patch to include fake login information.