...
| PlantUML Macro | ||
|---|---|---|
| ||
@startuml
autonumber
participant ApplicationManager
participant RialtoServerManager
ApplicationManager -> RialtoServerManager: create(state_observer, config)
note right: config allows app manager to specify number of preloaded servers, path to RialtoApplicationSessionServer binary, startup timer and heathcheck interval
loop For num of preloaded server
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)
RialtoServerManager -> RialtoServerManager: Cancel READY timer
RialtoApplicationSessionServer -> RialtoApplicationSessionServer !!: Exit process
else READY timer expired
RialtoServerManager -> RialtoServerManager: Kill spawned Rialto Application Session Server process
end
end
RialtoServerManager --> ApplicationManager:
@enduml |
Rialto App Startup
| PlantUML Macro | ||
|---|---|---|
|
...
| ||
@startuml
autonumber
participant ApplicationManager
participant RialtoServerManager
ApplicationManager -> RialtoServerManager: initiateApplication(application_id, AppState::Inactive, app_config)
note 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: Generate unique session_management_socket_name for Rialto Client to Rialto Application Session Server communication
end
alt There are no preloaded servers
RialtoServerManager -> RialtoServerManager: Generate socketpair for Rialto Application Session Server to Server Manager communication
RialtoServerManager -> RialtoApplicationSessionServer **: Spawn(server_manager_socket)
RialtoServerManager -> RialtoServerManager: Start [startup] second READY timer
RialtoServerManager --> ApplicationManager: OK/ERROR
RialtoApplicationSessionServer -> RialtoApplicationSessionServer: Set current_state = Uninitialised
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
end
@enduml |
| PlantUML Macro | ||||
|---|---|---|---|---|
| ||||
@startuml autonumber participant ApplicationManager participant RialtoServerManager ApplicationManager -> RialtoServerManager: initiateApplication(application_id, AppState::Inactive, app_config) note right: app_config allows app manager to specify the socket name to use for Rialto client/server session management opt Socket name not specified in app_config RialtoServerManager -> RialtoServerManager: Generate unique session_management_socket_name for Rialto Client to Rialto Application Session Server communication end RialtoServerManager -> RialtoServerManager: Generate socketpair for Rialto Application Session Server to Server Manager communication RialtoServerManager -> RialtoApplicationSessionServer **: Spawn(server_manager_socket, session_management_socket_name) note left Depending on configuration, Rialto Server Manager may maintain a pool of pre-loaded Application Session Servers in which case one of these will be used to speed up app launch time. end note RialtoServerManager -> RialtoServerManager: Start [1] second READY timer RialtoServerManager --> ApplicationManager: OK/ERROR RialtoApplicationSessionServer -> RialtoApplicationSessionServer: Set current_state = Uninitialised 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 |
...