This state machine describes the state transitions per player session in the Rialto Client.
State diagram snapshort since PlantUML not rendering correctly above:
The following table defines how various calls should be handled by Rialto client depending on the state of the player session:
| Rialto Client State | setPosition | haveData | needData |
|---|---|---|---|
| Buffering | Process normally | Process normally | Process normally |
| Playing | Process normally | Process normally | Process normally |
| Eos | Process normally | Unexpected, log warning & discard | Unexpected, log warning & discard |
| Seeking | Process normally | Expected, log info & discard* | Expected, log info & discard* |
| Failure | Unexpected, log warning & discard | Unexpected, log warning & discard | Unexpected, log warning & discard |
*Due to race conditions between client & server it is possible to get stale needData() & haveData() notifications and these should be ignored.