Basic Use Case
- Albert logs in
- Albert views contact list
- Albert initates chat with Bertha
- Bertha accepts
- Messages are exchanged
- Albert closes conversation
- Albert logs out
Process Analysis
-
- Mission Control starts up, reads configuration and credentials.
- Mission Control starts Connection Manager(s) as per configuration, passing in login credentials.
- Connection Manager(s) initiate connection and signals status on dbus.
- Connection Manager(s) receive contact list and signal status of each contact on dbus.
- Contact Manager created by dbus to service contact status signal.
Contact Manager looks up each contact in address book, builds lists of Contact ->Set of (account name, capabilites, reference to the Connection Manager handling the account).
- Contact Manager signals notification of changes of contact availability.
- Client UI requests contact list from Contact Manager.
- Client UI displays contact list.
-
- Albert selects Bertha and selects chat.
- Client UI asks Contact Manager for all possible methods of forming a text channel to Bertha.
- Contact Manager returns list of (account name, capabilities, ref to Connection Manager)
- Client UI applies UI-dependant policy to choose preferred tuple (this may involve querying Connection Managers for existing channels).
- Client UI asks Connection Manager for channel.
- Connection Manager opens channel and announces over dbus.
- Client UI has bi-directional communication with Connection Manager over channel
-
- Client UI requests closure of channel. Connection Manager tears down channal, signals channel closure.
-
- Mission Control shuts down all Connection Managers. Connection Managers signal their shutdown on the bus.
- Contact Control removes contacts on receipt of each shutdown signal from the Connection Managers.

