Versions Compared

Key

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

...

PlantUML Macro
formatSVG
titleNot Running to Inactive
@startuml

autonumber

participant ApplicationManager
participant RialtoServerManager

ApplicationManager             ->  RialtoServerManager:               ChangeApplicationStatechangeSessionServerState(application_id, AppState::Inactive)
RialtoServerManager            ->  RialtoServerManager:               Generate unique session_management_socket_name for App to Rialto Session Server communication
RialtoServerManager            ->  RialtoServerManager:               Generate socketpair for Rialto Session Server to Server Manager communication
RialtoServerManager            ->  RialtoApplicationSessionServer **: Spawn(socket)
RialtoServerManager            ->  RialtoServerManager:               Start [1] second READY timer
RialtoServerManager            --> ApplicationManager:                OK/ERROR
RialtoApplicationSessionServer ->  RialtoApplicationSessionServer:    Set current_state = Uninitiliased

alt RialtoApplicationSessionServer started successfully

RialtoApplicationSessionServer -// RialtoServerManager:               StateChanged(AppState::Uninitialised)
RialtoServerManager            ->  RialtoServerManager:               Cancel READY timer
RialtoServerManager            -// ApplicationManager:                StateChanged(application_id, AppState::Uninitialised)
RialtoServerManager            ->  RialtoApplicationSessionServer:    SetConfiguration(session_management_socket_name, AppState::Inactive, resources, log_level)
note right
"resources" structure will specify the maximum decoder resources that the
application is permitted to use. For now it shall have a max_playback_sessions
property and a supports_web_audio flag. This may be enhanced for things like
HD/UHD, audio only etc in future.
end note
RialtoApplicationSessionServer --> RialtoServerManager:
RialtoApplicationSessionServer ->  RialtoApplicationSessionServer:    Create listening socket & bind to session_management_socket_name

alt State transition successful
RialtoApplicationSessionServer ->  RialtoApplicationSessionServer:    Set current_state = Inactive
RialtoApplicationSessionServer -// RialtoServerManager:               StateChanged(AppState::Inactive)
RialtoServerManager            -// ApplicationManager:                StateChanged(application_id, AppState::Inactive)
ApplicationManager             ->  RialtoServerManager:               GetAppConnectionInfo()
RialtoServerManager            --> ApplicationManager:                session_management_socket_name
else State transition failed
RialtoApplicationSessionServer ->  RialtoApplicationSessionServer:    Unbind/free session management socket (if created)
RialtoApplicationSessionServer -// RialtoServerManager:               StateChanged(AppState::Error)
RialtoServerManager            -// ApplicationManager:                StateChanged(application_id, AppState::Error)
RialtoApplicationSessionServer ->  RialtoApplicationSessionServer !!: Exit process
end

else Session Server initialisation failed

RialtoApplicationSessionServer ->  RialtoApplicationSessionServer:    Unbind/free session management socket (if created)
RialtoApplicationSessionServer -// RialtoServerManager:               StateChanged(AppState::Error)
RialtoServerManager            ->  RialtoServerManager:               Cancel READY timer
RialtoApplicationSessionServer ->  RialtoApplicationSessionServer !!: Exit process
RialtoServerManager            -// ApplicationManager:                StateChanged(application_id, AppState::Error)

else READY timer expired

RialtoServerManager            ->  RialtoServerManager:               Kill spawned Rialto Application Session Server process
RialtoServerManager            -// ApplicationManager:                StateChanged(application_id, AppState::Error)

end

@enduml

...

PlantUML Macro
formatSVG
titleInactive to Active
@startuml

autonumber

participant ApplicationManager
participant RialtoServerManager
participant RialtoApplicationSessionServer

ApplicationManager             ->  RialtoServerManager:               ChangeApplicationStatechangeSessionServerState(application_id, AppState::Active)
RialtoServerManager            ->  RialtoApplicationSessionServer:    SetState(AppState::Active)
RialtoApplicationSessionServer --> RialtoServerManager:               OK/ERROR
RialtoServerManager            --> ApplicationManager:                OK/ERROR
RialtoApplicationSessionServer ->  RialtoApplicationSessionServer:    Allocate shared memory buffer

opt State transition successful
RialtoApplicationSessionServer ->  RialtoApplicationSessionServer:    Set current_state = Active
RialtoApplicationSessionServer -// RialtoServerManager:               StateChanged(AppState::Active)
RialtoServerManager            -// ApplicationManager:                StateChanged(application_id, AppState::Active)
else State transition failed
RialtoApplicationSessionServer ->  RialtoApplicationSessionServer:    Free shared memory buffer if allocated
RialtoApplicationSessionServer -// RialtoServerManager:               StateChanged(AppState::Error)
RialtoServerManager            -// ApplicationManager:                StateChanged(application_id, AppState::Error)
end

@enduml

...

PlantUML Macro
formatSVG
titleActive to Inactive
@startuml

autonumber

participant ApplicationManager
participant RialtoServerManager
participant RialtoApplicationSessionServer

ApplicationManager             ->  RialtoServerManager:               ChangeApplicationStatechangeSessionServerState(application_id, AppState::Inactive)
RialtoServerManager            ->  RialtoApplicationSessionServer:    SetState(AppState::Inactive)
RialtoApplicationSessionServer --> RialtoServerManager:               OK/ERROR
RialtoServerManager            --> ApplicationManager:                OK/ERROR
RialtoApplicationSessionServer ->  RialtoApplicationSessionServer:    Free any remaining CDM resources
RialtoApplicationSessionServer ->  RialtoApplicationSessionServer:    Free any remaining Player resources
RialtoApplicationSessionServer ->  RialtoApplicationSessionServer:    Unmap/free shared memory buffer
RialtoApplicationSessionServer ->  RialtoApplicationSessionServer:    Set current_state = Inactive
RialtoApplicationSessionServer -// RialtoServerManager:               StateChanged(AppState::Inactive)
RialtoServerManager            -// ApplicationManager:                StateChanged(application_id, AppState::Inactive)

@enduml

...

PlantUML Macro
formatSVG
titleInactive to Not Running
@startuml

autonumber

participant ApplicationManager
participant RialtoServerManager
participant RialtoApplicationSessionServer

ApplicationManager             ->  RialtoServerManager:               ChangeApplicationStatechangeSessionServerState(application_id, AppState::NotRunning)
RialtoServerManager            ->  RialtoApplicationSessionServer:    SetState(AppState::NotRunning)
RialtoApplicationSessionServer ->  RialtoApplicationSessionServer:    Close IPC connection with app
RialtoApplicationSessionServer ->  RialtoApplicationSessionServer:    Set current_state = NotRunning
RialtoApplicationSessionServer -// RialtoServerManager:               StateChanged(AppState::NotRunning)
RialtoApplicationSessionServer ->  RialtoApplicationSessionServer !!: Exit process
RialtoServerManager            -// ApplicationManager:                StateChanged(application_id, AppState::NotRunning)

@enduml

...