API

This is the design description of the new API (after 0.4.6)

Goals

  • connection management
  • SyncML package oriented high level API
  • support for device information management
  • support for authentication handling
  • one API for all transport protocols
  • one callback per event class

Protocol Stack Management

This is a wrapper around the SmlManager?.

  • collect the events
  • manage the layers

Transport Management

  • functions
    • new
    • config
    • init
    • connect
    • disconnect
    • finalize
    • set callback
  • transport events
    • LIBSYNCML_EVENT_TRANSPORT_CONNECT
    • LIBSYNCML_EVENT_TRANSPORT_DISCONNECT
    • LIBSYNCML_EVENT_TRANSPORT_ERROR

Authentication

  • unique authentication callback
  • verification function which implements the supported authentication methods

Device Management

This is the old code because a change is not really necessary.

  • an agent to handle requests from the remote peer
  • several function to implement the necessary device management structures

Server Alerted Notifications (SAN)

This is the old code because a change is not really necessary.

Data Synchronization

  • package events (smlPackageSetEventCallback)
    • SML_EVENT_PACKAGE_CLIENT_ALERT_FINAL
    • SML_EVENT_PACKAGE_SERVER_ALERT_FINAL
    • SML_EVENT_PACKAGE_CLIENT_SYNC_FINAL
    • SML_EVENT_PACKAGE_SERVER_SYNC_FINAL
    • SML_EVENT_PACKAGE_CLIENT_MAP_FINAL
    • SML_EVENT_PACKAGE_SERVER_SESSION_FINAL
    • SML_EVENT_PACKAGE_REMOTE_ERROR
    • SML_EVENT_PACKAGE_LOCAL_ERROR
  • one callback for synchronization object replies
  • one callback for received objects
  • client functions
    • add/send datastore(s)
    • add/send synchronization object(s)
    • send map item
    • send map
  • server functions
    • one callback for received datastores
    • add/send datastore(s)
    • add/send synchronization object(s)
    • send session end