Basic Scenario

Basic Use Case

  1. Albert logs in
  2. Albert views contact list
  3. Albert initates chat with Bertha
  4. Bertha accepts
  5. Messages are exchanged
  6. Albert closes conversation
  7. 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.