Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

This state machine describes the state transitions per player session in the Rialto Client.

PlantUML Render Macro
formatSVG
titlesdfg

@startuml

hide empty description

state All {

All --> Failure: server.failure All --> [*]: client.stop(), server.PLAYBACK_STATE_STOPPED state Seekable { [*] --> Buffering: server.NETWORK_STATE_BUFFERING / server.NETWORK_STATE_BUFFERING Buffering --> Playing: server.PLAYBACK_STATE_PLAYING Playing --> Buffering: server.NETWORK_STATE_STALLED Seeking --> Buffering: server.PLAYBACK_STATE_FLUSHED Seekable --> Seeking: server.PLAYBACK_STATE_SEEKING All --> Eos: server.PLAYBACK_STATE_EOS } } @enduml



PlantUML Macro
titleRialto client player session state machine
@startuml


hide empty description

state All {
	All				--> Failure:	server.failure
	All				-->	[*]:		client.stop(), server.PLAYBACK_STATE_STOPPED

	state Seekable {
		[*]			-->	Buffering:      server.NETWORK_STATE_BUFFERING / server.NETWORK_STATE_BUFFERING
		Buffering	-->	Playing:		server.PLAYBACK_STATE_PLAYING
		Playing		-->	Buffering:		server.NETWORK_STATE_STALLED
		Seeking		-->	Buffering:		server.PLAYBACK_STATE_FLUSHED
		Seekable	-->	Seeking:		server.PLAYBACK_STATE_SEEKING
		All			-->	Eos:			server.PLAYBACK_STATE_EOS
	}

}

@enduml




State Behaviour - READY FOR REVIEW

The following table defines how various calls should be handled by Rialto client depending on the state of the player session:

Rialto Client StatesetPositionhaveDataneedData
BufferingProcess normallyProcess normallyProcess normally
PlayingProcess normallyProcess normallyProcess normally
EosProcess normallyUnexpected, log warning & discardUnexpected, log warning & discard
SeekingProcess normallyExpected, log info & discard*Expected, log info & discard*
FailureUnexpected, log warning & discardUnexpected, log warning & discardUnexpected, log warning & discard

*Due to race conditions between client & server it is possible to get stale needData() & haveData() notifications and these should be ignored.