![]() The only knownĭownside is that the increased row size caused by the duplication of data intoĬolumns and the non-fixed row size makes SCAN queries slower. Migrations are only necessary when adding new queryable columns. This "fat" approach means fields can be added easily (to the JSON) and Table Design: Mailspring's approach to SQLite is similar to CoreData's: Aĭata column stores a full JSON representation of the model, and additionalĬolumns contain copies of the individual fields so the table can be queried. Also wakes to perform other tasks, like fetching message bodies the Performs either a "local" or "deep" sync of part of the folder's UID space.įoreground Worker: Idles on the primary folder and wakes to syncsĬhanges. The supported IMAP features) uses CONDSTORE / XYZRESYNC to check for mail or Within each thread, work isīackground Worker: Periodically iterates over folders and (depending on With two open connections to the mail server. Mailspring uses a fairly basic syncing algorithm, which runs on two threads ![]() This design is necessary for Mailspring, because it's reactiveĭesign means no UI changes occur until the task executes "local" changes and "local" operation and a "remote" operation that requires network access and mayīe retried. Modifications on stdout), and are divided into two parts: an immediate TasksĪre added to a queue table in sqlite (so task completions appear as object Mailsync accepts "tasks" via stdin as newline-separated JSON objects. Observable queries backing various views to update and display new data. These object changes are broadcast within the Electron app and cause Mailspring UI, which is built on reactive data patterns and uses observable Used to modify the database but is critical for providing data to the This restricts the kinds of queries that can be When Mailsync modifies mail data, it emits all modified objects to stdout as To pass these arguments automatically so testing is easy. You're developing in Xcode or in Visual Studio, you can configure the debugger It requires an account and Mailspring ID, and theseĬan be provided either as arguments or as newline-separated data on stdin. Mailsync can be run on a standard command line, which makes it easy to test That auth failures, connection errors, etc. Mailspring runs one mailsync process for each connected email account,Īnd automatically starts/stops/restarts them as necessary. Learn from other people doing development.Įach instance of Mailsync runs email, contact, and calendar sync for a singleĪccount. High-quality pull requests andĬontributions are welcome! When you're getting started, you may want to join our Software without specific prior written permission. The names of the Mailspring or Mailspring Mailsync project nor the names of itsĬontributors may be used to endorse or promote products derived from this ![]() You have questions about licensing Mailsync or whether your use is acceptable, Would benefit the upstream project, pull requests are greatly appreciated. If you make improvements to mailsync that You are welcome to copy, modify, andĭistribute this code for private or public use, but all derivative works mustīe open-sourced with a GPLv3 license. IMAP/SMTP framework and uses sqlite3 to store mail data in a JSON format. This repository contains the source code for Mailspring's sync engine, a nativeĬ++11 codebase that targets Mac, Windows, and Linux. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |