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.
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.
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.
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.
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).
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.
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.