Bibliography
SILENUS
SyncML
The following classes and definitions are visible for the user of the library:
Data nodes within the SyncML package tree can be attributed with the meta information Type and Format. Type specifies the media type of the content. It uses the standard MIME content-types. The default format is text/plain. The Format field specifies the encoding format for this data field. The most important encoding formats are chr and b64. chr is the default format and means clear-text or specified someplace else. b64 is for Base64 encoding, which is used for binary data.
Type
Format
text/plain
chr
b64
The SMLType class handles these values and their default values. It is responsible for inserting the meta information into packages where needed and leave them out where the default values are set.
SMLType
Another thing that has to be handled correctly are URIs within the SyncML package tree. Some URIs might be absolute, and some relative. It is the purpose of this class to give a unique representation, so URIs can be comparable.
Another purpose of this class is to handle the LocName property of SyncML URIs. This property is not used during the sync process itself, but may be used to describe URIs for the user in program outputs.
LocName
The SyncML specification defines a way to exchange device information. Device information contains things such as the type and vendor of a device, serial numbers, firmware versions, etc. It also contains vital information such as the maximum message size and the space left in the device.
This device information is, of course, exchanged in an XML representation. To hide all this from the user, a SMLDevInf object is used. The SMLDevInf object contains all device information for one device and provides access functions for it.
SMLDevInf
The SMLSessionHandler is the main class that the users of this library have to derive from. It contains a lot of callbacks vital for session handling, such as get / receive device information, or find out who we talk to. A SyncML program might have multiple sessions (usually servers) or just one session (usually clients).
SMLSessionHandler
The SMLDatabase is the adaptor for the real databases. A SMLDatabase object is needed for each real database. The SMLDatabase object has to tell the session handler which database entries have changed. It also receives the change information of the remote device.
SMLDatabase
It is important to note, that different session handlers might have access to the same SMLDatabase object. It is therefore mandatory to take care of locking issues in a multitasking environment.
The SyncMLSingleThread class is responsible for connecting incoming and outgoing connections with a session handler. It can only handle one session at a time. This ensures that the user has not to deal with multi-threading issues.
SyncMLSingleThread
The SyncMLMultiThread also connects incoming requests to a session handler. As the name suggests, it is capable of handling multiple requests at the same time.
SyncMLMultiThread