Versions Compared

Key

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

...

PlantUML Macro
formatSVG
@startuml

autonumber

participant RialtoServerManager

RialtoServerManager            ->  RialtoServerManager:               Generate socketpair for Rialto Application Session Server to Server Manager communication
RialtoServerManager            ->  RialtoApplicationSessionServer **: Spawn(server_manager_socket)
note left
Spawn preloaded Application
Session Servers to speed up app launch time.
end note
RialtoServerManager            ->  RialtoServerManager:               Start [startup] second READY timer
RialtoApplicationSessionServer ->  RialtoApplicationSessionServer:    Set current_state = Uninitialised

alt RialtoApplicationSessionServer started successfully

RialtoApplicationSessionServer -// RialtoServerManager:               stateChanged(AppState::Uninitialised)
RialtoServerManager            ->  RialtoServerManager:               Cancel READY timer          

else Session Server initialisation failed

RialtoApplicationSessionServer -// RialtoServerManager:            ->   stateChanged(AppState::Error)
RialtoServerManagerRialtoServerManager:            ->  RialtoServerManager: Cancel READY timer
RialtoApplicationSessionServer ->  RialtoApplicationSessionServer:    Unbind/free session management socket  Cancel READY timer(if created)
RialtoApplicationSessionServer ->  RialtoApplicationSessionServer !!: Exit process  

else READY timer expired

RialtoServerManager            ->  RialtoServerManager:               Kill spawned Rialto Application Session Server process
RialtoApplicationSessionServer ->  RialtoApplicationSessionServer:    Unbind/free session management socket (if  created)

end

@enduml

Not Running (no server preloading)/Unitialized (server preloading)→Inactive

PlantUML Macro
formatSVG
titleNot Running to Inactive
@startuml

autonumber

participant ApplicationManager
participant RialtoServerManager

ApplicationManager             ->  RialtoServerManager:               initiateApplication(application_id, AppState::Inactive, app_config) 
note
alt right: app_config allows app manager to specify the socket name to use for Rialto client/server session management and the socket name for communication with a display server 
opt session_management_socket_name not specified in app_config
RialtoServerManager            ->  RialtoServerManager:There are no preloaded servers
RialtoServerManager            ->  RialtoServerManager:               Generate socketpair for Rialto Application Session Server to Server Manager communication
RialtoServerManager            ->  RialtoApplicationSessionServer    Generate unique session_management_socket_name for Rialto Client to Rialto Application Session Server communication
end
alt There are no preloaded servers
RialtoServerManager**: Spawn(server_manager_socket)
RialtoServerManager            ->  RialtoServerManager:            ->  RialtoServerManager: Start [startup] second READY timer
RialtoApplicationSessionServer ->  RialtoApplicationSessionServer:    Set current_state = Generate socketpair for Rialto Application Session Server to Server Manager communication
RialtoServerManagerUninitialised

alt RialtoApplicationSessionServer started successfully

RialtoApplicationSessionServer -// RialtoServerManager:            ->  RialtoApplicationSessionServer **: Spawn(server_manager_socket stateChanged(AppState::Uninitialised)
RialtoServerManager            ->  RialtoServerManager:               Start [startup] second Cancel READY timer
RialtoApplicationSessionServerRialtoServerManager ->  RialtoApplicationSessionServer:    Set current_state = Uninitialised

alt RialtoApplicationSessionServer started successfully

RialtoApplicationSessionServer -// RialtoServerManagerApplicationManager:                stateChanged(application_id, AppState::Uninitialised)
RialtoServerManager
ref over ApplicationManager, RialtoApplicationSessionServer : [[#RialtoApplicationSessionManagement-Unitialized→Inactive Unitialized→Inactive]]  

else Session Server initialisation failed

RialtoApplicationSessionServer ->  RialtoServerManagerRialtoApplicationSessionServer:    Unbind/free session management socket (if created)
RialtoApplicationSessionServer -// RialtoServerManager:     Cancel READY timer          stateChanged(AppState::Error)
RialtoServerManager            -//>  ApplicationManagerRialtoServerManager:                stateChanged(application_id, AppState::Uninitialised)

ref over ApplicationManager,Cancel READY timer
RialtoApplicationSessionServer ->  RialtoApplicationSessionServer !!: [[#RialtoApplicationSessionManagement-Unitialized→Inactive Unitialized→Inactive]]  

else State transition failed
RialtoApplicationSessionServer ->  RialtoApplicationSessionServer:Exit process
RialtoServerManager         Unbind/free session management socket (if created)
RialtoApplicationSessionServer -// RialtoServerManagerApplicationManager:                stateChanged(application_id, AppState::Error)

else READY timer expired

RialtoServerManager            -//>  ApplicationManagerRialtoServerManager:                stateChanged(application_id, AppState::Error)
RialtoApplicationSessionServer ->  RialtoApplicationSessionServer !!: Exit process

else Kill spawned Rialto Application Session Server initialisation failed

RialtoApplicationSessionServer ->process
RialtoServerManager   RialtoApplicationSessionServer:    Unbind/free session management socket (if created)
RialtoApplicationSessionServer -// RialtoServerManagerApplicationManager:                stateChanged(application_id, AppState::Error)
RialtoServerManager
end
else There are preloaded servers
note over       ->  RialtoServerManagerApplicationManager, RialtoApplicationSessionServer: Pick 1st free preloaded server (it's already in       Cancel READY timer
RialtoApplicationSessionServer -> unitialized state)
ref over ApplicationManager, RialtoApplicationSessionServer !!: Exit process[[#RialtoApplicationSessionManagement-Unitialized→Inactive Unitialized→Inactive]]
RialtoServerManager            --//> ApplicationManager:                stateChanged(application_id, AppState::Error)

else READY timer expired
OK/ERROR
end

@enduml

Unitialized→Inactive

PlantUML Macro
formatSVG
titleNot Running to Inactive
@startuml

autonumber

participant ApplicationManager
participant RialtoServerManager 

opt session_management_socket_name not specified in app_config
RialtoServerManager            ->  RialtoServerManager:                Kill spawnedGenerate unique session_management_socket_name for Rialto ApplicationClient Sessionto ServerRialto process
RialtoServerManagerApplication Session Server communication
end
note right
 "app_config allows app manager to specify the -// ApplicationManager: socket name 
  to use for Rialto client/server session management 
  and the socket  stateChanged(application_id, AppState::Error)

end
else There are preloaded servers
note over ApplicationManager, RialtoApplicationSessionServer: Pick 1st free preloaded server (it's already in unitialized state)
ref over ApplicationManager, RialtoApplicationSessionServer : [[#RialtoApplicationSessionManagement-Unitialized→Inactive Unitialized→Inactive]]
RialtoServerManager            --> ApplicationManager:                OK/ERROR
end

@enduml

Unitialized→Inactive

PlantUML Macro
formatSVG
titleNot Running to Inactive
@startuml

autonumber

participant ApplicationManager
participant RialtoServerManagername for communication with a display server"
end note


RialtoServerManager            ->  RialtoApplicationSessionServer:    SetConfiguration(session_management_socket_name, AppState::Inactive, resources, log_level, display_name)
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
opt display_name defined
 RialtoApplicationSessionServer ->  RialtoApplicationSessionServer:    Set WAYLAND_DISPLAY environment variable
end

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

opt Server preloading is active
	note over ApplicationManager, RialtoApplicationSessionServer: Preload RialtoApplicationSessionServer in place of the one that has just been allocated
	ref over ApplicationManager, RialtoApplicationSessionServer : [[#RialtoApplicationSessionManagement-NotRunning→Unitialized(serverpreloading) Not Running→Unitialized (server preloading)]]
end

@enduml

...