...
| 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)
ref over ApplicationManager, RialtoApplicationSessionServer : [[#RialtoApplicationSessionManagement-Unitialized→Inactive Unitialized→Inactive]]
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
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
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 |
...