This state machine describes the state transitions per player session in the Rialto Client.
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.