...
| PlantUML Macro | ||||
|---|---|---|---|---|
| ||||
@startuml autonumber participant ApplicationManager participant RialtoServerManager ApplicationManager -> RialtoServerManager: changeSessionServerState(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: StateChangedstateChanged(AppState::Uninitialised) RialtoServerManager -> RialtoServerManager: Cancel READY timer RialtoServerManager -// ApplicationManager: StateChangedstateChanged(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: StateChangedstateChanged(AppState::Inactive) RialtoServerManager -// ApplicationManager: StateChanged(application_id, AppState::Inactive) ApplicationManager -> RialtoServerManager: GetAppConnectionInfogetAppConnectionInfo() RialtoServerManager --> ApplicationManager: session_management_socket_name else State transition failed RialtoApplicationSessionServer -> RialtoApplicationSessionServer: Unbind/free session management socket (if created) RialtoApplicationSessionServer -// RialtoServerManager: StateChangedstateChanged(AppState::Error) RialtoServerManager -// ApplicationManager: StateChangedstateChanged(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: StateChangedstateChanged(AppState::Error) RialtoServerManager -> RialtoServerManager: Cancel READY timer RialtoApplicationSessionServer -> RialtoApplicationSessionServer !!: Exit process RialtoServerManager -// ApplicationManager: StateChangedstateChanged(application_id, AppState::Error) else READY timer expired RialtoServerManager -> RialtoServerManager: Kill spawned Rialto Application Session Server process RialtoServerManager -// ApplicationManager: StateChangedstateChanged(application_id, AppState::Error) end @enduml |
...
| PlantUML Macro | ||||
|---|---|---|---|---|
| ||||
@startuml autonumber participant ApplicationManager participant RialtoServerManager participant RialtoApplicationSessionServer ApplicationManager -> RialtoServerManager: changeSessionServerState(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: StateChangedstateChanged(AppState::Active) RialtoServerManager -// ApplicationManager: StateChangedstateChanged(application_id, AppState::Active) else State transition failed RialtoApplicationSessionServer -> RialtoApplicationSessionServer: Free shared memory buffer if allocated RialtoApplicationSessionServer -// RialtoServerManager: StateChangedstateChanged(AppState::Error) RialtoServerManager -// ApplicationManager: StateChangedstateChanged(application_id, AppState::Error) end @enduml |
...
| PlantUML Macro | ||||
|---|---|---|---|---|
| ||||
@startuml autonumber participant ApplicationManager participant RialtoServerManager participant RialtoApplicationSessionServer ApplicationManager -> RialtoServerManager: changeSessionServerState(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: StateChangedstateChanged(AppState::Inactive) RialtoServerManager -// ApplicationManager: StateChangedstateChanged(application_id, AppState::Inactive) @enduml |
...
| PlantUML Macro | ||||
|---|---|---|---|---|
| ||||
@startuml autonumber participant ApplicationManager participant RialtoServerManager participant RialtoApplicationSessionServer ApplicationManager -> RialtoServerManager: changeSessionServerState(application_id, AppState::NotRunning) RialtoServerManager -> RialtoApplicationSessionServer: SetState(AppState::NotRunning) RialtoApplicationSessionServer -> RialtoApplicationSessionServer: Close IPC connection with app RialtoApplicationSessionServer -> RialtoApplicationSessionServer: Set current_state = NotRunning RialtoApplicationSessionServer -// RialtoServerManager: StateChangedstateChanged(AppState::NotRunning) RialtoApplicationSessionServer -> RialtoApplicationSessionServer !!: Exit process RialtoServerManager -// ApplicationManager: StateChangedstateChanged(application_id, AppState::NotRunning) @enduml |
...
| PlantUML Macro | ||||
|---|---|---|---|---|
| ||||
@startuml autonumber participant ApplicationManager participant RialtoApplicationSessionServer ref over ApplicationManager, RialtoApplicationSessionServer : [[#RialtoSessionManagementSequenceDiagrams-NotRunning→Inactive Not Running to Inactive]] ApplicationManager -> Application ** : Spawn(AppState::Inactive, listening_socket_name) Application -> RialtoClient ** : Load RialtoClient library RialtoClient -> RialtoApplicationSessionServer: Connect(rialto_listening_socket) note right Connect is not an API call, it is establishing IPC channel with server end note RialtoClient --> Application: status Application -// ApplicationManager: StateChangedstateChanged(AppState::Inactive) @enduml |
...
| PlantUML Macro | ||||
|---|---|---|---|---|
| ||||
@startuml autonumber participant ApplicationManager participant RialtoApplicationSessionServer ref over ApplicationManager, RialtoApplicationSessionServer : [[#RialtoSessionManagementSequenceDiagrams-NotRunning→Active Not Running to Active]] ApplicationManager -> Application ** : Spawn(AppState::Running, listening_socket_name) Application -> RialtoClient ** : load RialtoClient library RialtoClient -> RialtoApplicationSessionServer: Connect(rialto_listening_socket) note right Connect is not an API call, it is establishing IPC channel with server end note RialtoClient --> Application: Application -> RialtoClient: setApplicationState(Running) RialtoClient -> RialtoApplicationSessionServer: GetSharedMemory() RialtoApplicationSessionServer --> RialtoClient: shm_fd RialtoClient -> RialtoClient: Map shared memory RialtoClient --> Application: status Application -// ApplicationManager: StateChangedstateChanged(AppState::Running) @enduml |
...
| PlantUML Macro | ||||
|---|---|---|---|---|
| ||||
@startuml autonumber participant ApplicationManager participant RialtoApplicationSessionServer participant Application participant RialtoClient ref over ApplicationManager, RialtoApplicationSessionServer : [[#RialtoSessionManagementSequenceDiagrams-Inactive→Active Inactive to Active]] ApplicationManager -> Application : NotifyNewState(AppState::Running) Application -> RialtoClient: setApplicationState(Running) RialtoClient -> RialtoApplicationSessionServer: GetSharedMemory() RialtoApplicationSessionServer --> RialtoClient: shm_fd RialtoClient -> RialtoClient: Map shared memory RialtoClient --> Application: status Application -// ApplicationManager: StateChangedstateChanged(AppState::Running) @enduml |
...
| PlantUML Macro | ||||
|---|---|---|---|---|
| ||||
@startuml autonumber participant ApplicationManager participant RialtoApplicationSessionServer participant Application participant RialtoClient ApplicationManager -> Application : NotifyNewState(AppState::Inactive) Application -> RialtoClient: setApplicationState(Inactive) RialtoClient -> RialtoClient : Free CDM & Player resources RialtoClient -> RialtoClient: Unmap shared memory RialtoClient --> Application: status Application -// ApplicationManager: StateChangedstateChanged(AppState::Inactive) ref over ApplicationManager, RialtoApplicationSessionServer : [[#RialtoSessionManagementSequenceDiagrams-Active→Inactive Active to Inactive]] @enduml |
...
| PlantUML Macro | ||||
|---|---|---|---|---|
| ||||
@startuml autonumber participant ApplicationManager participant RialtoApplicationSessionServer participant Application participant RialtoClient ApplicationManager -> Application : NotifyNewState(AppState::NotRunning) Application -// ApplicationManager: StateChangedstateChanged(AppState::NotRunning) Application -> RialtoClient: Unload library RialtoClient -> RialtoClient !!: Application -> Application !!: ref over ApplicationManager, RialtoApplicationSessionServer : [[#RialtoSessionManagementSequenceDiagrams-Inactive→NotRunning Inactive to Not Running]] @enduml |
...
| PlantUML Macro | ||||
|---|---|---|---|---|
| ||||
@startuml autonumber participant ApplicationManager participant RialtoApplicationSessionServer participant Application participant RialtoClient ApplicationManager -> Application : NotifyNewState(AppState::NotRunning) Application -> RialtoClient: setApplicationState(Inactive) RialtoClient -> RialtoClient : Free CDM & Player resources RialtoClient -> RialtoClient: Unmap shared memory RialtoClient --> Application: status Application -// ApplicationManager: StateChangedstateChanged(AppState::NotRunning) Application -> RialtoClient: Unload library RialtoClient -> RialtoClient !!: Application -> Application !!: ref over ApplicationManager, RialtoApplicationSessionServer : [[#RialtoSessionManagementSequenceDiagrams-Active→NotRunning Active to Not Running]] @enduml |
...