sequenceDiagram
participant A as Alice
participant AC as Alice Chat
participant AA as Alice Agent
participant XFTP as Alice's XFTP relay(s)
participant SMP as Bob's SMP relay
participant BA as Bob Agent
participant BC as Bob Chat
participant B as Bob
A ->> AC: APISendMessage
AC ->> AA: sendMessage(x.msg.new) /
CIFSSndStored
AA ->> SMP: SEND
SMP ->> BA: MSG
BA ->> BC: MSG
BC ->> B: CRNewChatItem
(file not ready)
B ->> BC: ReceiveFile
BC ->> B: error: no file description
AC ->> AA: sendFile
AC ->> A: CRSndFileStart
AA ->> XFTP: chunk (FNEW, FPUT)
AA ->> AC: SFPROG /
CIFSSndTransfer
AC ->> A: CRSndFileProgress (new)
AA ->> XFTP: chunks
AA ->> AC: SFDONE sd rds
AC ->> AA: sendMessage(x.msg.file.descr) /
FSComplete / CIFSSndComplete
AC ->> A: CRSndFileComplete (?)
AA ->> SMP: SEND
SMP ->> BA: MSG
BA ->> BC: MSG
BC ->> B: CRChatItemUpdated
(file is ready)
BC ->> B: CRFileReady (TBC)
B ->> BC: ReceiveFile
BC ->> BA: getFile
BC ->> B: CRRcvFileStart
XFTP ->> BA: chunk (FGET / FRFile)
BA ->> BC: RFPROG
BC ->> B: CRRcvFileProgress (new)
XFTP ->> BA: chunks
BA ->> BC: RFDONE
BC ->> B: CRNewChatItem
(file received)
BC ->> B: CRRcvFileComplete