This site has been retired. For up to date information, see handbook.gnome.org or gitlab.gnome.org.


[Home] [TitleIndex] [WordIndex

This page explains the architecture of Conduit.

1. Background

This relationship is shown below. The role is shown in the top line while the class responsible is shown in brackets. The SyncManager controls the process and is responsible for managing the multiple sync threads :

Synchronisation.png

2. Architecture

Conduit is a synchronization framework that makes it easy to support synchronizing your data. To do so one must write a Dataprovider which is able to encode and store Data in the appropriate manner. The synchronization engine is decoupled from the Dataprovider backends and the GUI to make this possible.

Conduit has been designed to be exceptionally easy to extend. To enable this most things in Conduit are discovered dynamically when the application is started (like deskbar). The advantage of this is that extending the application is easy, just drop a python file into the correct directory (~/.conduit/modules/ to add new features. The downside of this is that the architecture is a bit more cumbersome.

Both new DataProviders and new Conversions can be loaded at runtime. For example this allows the developer to add support for a totally new online service in just one python file. The developer is free to use the built in types shipped with Conduit or define their own. If you define your own types on which your DataProvider operates then you need to provide a converter which will convert that type into another type which the application (and other DataProviders are aware.

To enable easier management of the dynamically loaded modules both DataProviders and Converters are held in a ModuleWrapper. Debugging

Conduit uses the python debugging module.

To specify the loglevel of Conduit at runtime set the CONDUIT_LOGLEVEL environment variable to the appropriate value, e.g. CONDUIT_LOGLEVEL=CRITICAL conduit/conduit. Acknowledgements

The following applications I borrowed liberally from


2024-10-23 10:58