@startuml
autonumber
participant ApplicationManager
participant RialtoApplicationSessionServer
ref over ApplicationManager, RialtoApplicationSessionServer : [[#RialtoApplicationSessionManagement-NotRunning→Active Not Running to Active]]
ApplicationManager -> Application ** : Spawn(AppState::Running, listening_socket_name):Running, listening_socket_name)
Application -> RialtoClient ** : load RialtoClient library
Application -> RialtoClient **: : load RialtoClient libraryregisterClient()
RialtoClient -> RialtoApplicationSessionServer: Connect(rialto_listening_socket)
note right
Connect is not an API call, it is establishing IPC channel with server
end note
RialtoClient
opt first registerClient call
RialtoClient --> ApplicationRialtoApplicationSessionServer:
Application registerClient()
RialtoApplicationSessionServer --> RialtoClient: setApplicationState(Running)status, AppState::Running
end
RialtoClient -> RialtoApplicationSessionServer: GetSharedMemory()
RialtoApplicationSessionServer --> RialtoClient: shm_fd
RialtoClient -> RialtoClient: Map shared memory
RialtoClient --> Application: status, AppState::Running
Application -// ApplicationManager: stateChanged(AppState::Running)
@enduml |