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.