Mailbox client for a contact's mailbox
Mailbox clients for communicating with our own mailbox and contacts' mailboxes are managed by a singleton mailbox client manager (#2228).
This ticket covers the client for communicating with a contact's mailbox. Some code will be shared with the client for communicating with our own mailbox (#2290 (closed)). The shared code is covered by #2229 (closed).
The client's connectivity check will use #2186 (closed).
- The client always has one contact assigned for upload
- At any given time the client may have one contact assigned for download, depending on whether we have our own mailbox
When the client is created:
- Create and start the upload worker (#2291 (closed))
When a contact is assigned for download:
- Create and start the download worker (#2292 (closed))
When a contact is deassigned for download:
- Destroy the download worker