Synchronize Status Listener

Retrieve the synchronization status.

Synchronize Status Listener is mainly for debugging and performance measuring purposes to monitor stages of a synchronize session. It could also be used in UI for synchronization progress status. Below is a sample Synchronize Status Listener.

public class MySyncStatusListener : SyncStatusListener
  {
    long start;

    public MySyncStatusListener()
    {
      start = DateTime.Now.Ticks;
    }

    public virtual bool ObjectSyncStatus(ObjectSyncStatusData statusData) 
    {

      long now = DateTime.Now.Ticks;
      long interval = now - start;
      start = now;
      String infoMessage;

      SyncStatusState syncState = statusData.State;

      switch (syncState) {
        case SyncStatusState.SyncStarting:
          infoMessage = "START [" + interval + "]";
          break;
        case SyncStatusState.ApplicationDataUploading:
          infoMessage = "DATA UPLOADING [" + interval + "] " +
            statusData.CurrentMBO + ": (S>" +
            statusData.SentBytes + " R<" +
            statusData.ReceivedBytes + ")";
          break;
        case SyncStatusState.ApplicationDataUploadingAcknowledgementReceived:
          infoMessage = "RECEIVING UPLOAD ACK [" + interval + "]";
          break;
        case SyncStatusState.ApplicationDataUploadingDone:
          infoMessage = "UPLOAD DONE [" + interval + "] " +
            statusData.CurrentMBO + ": (S>" +
            statusData.SentBytes + " R<" +
            statusData.ReceivedBytes + ")";
          break;
        case SyncStatusState.ApplicationDataDownloading:
          infoMessage = "DATA DOWNLOADING[" + interval + "] " +
            statusData.CurrentMBO + ": (S>" +
            statusData.SentBytes + " R<" +
            statusData.ReceivedBytes + ")";
          break;
        case SyncStatusState.ApplicationSyncDisconnecting:
          infoMessage = "DISCONNECTING [" + interval + "]";
          break;
        case SyncStatusState.ApplicationSyncCanceled:
          infoMessage = "SYNC CANCELED [" + interval + "]";
          break;
        case SyncStatusState.ApplicationDataDownloadingDone:
          infoMessage = "DATA DOWNLOADING DONE [" + interval + "]";
          break;
        case SyncStatusState.ApplicationSyncDone:
          infoMessage = "DONE [" + interval + "]";
          break;
        default:
          infoMessage = "STATE" + syncState + "[" + interval + "]";
          break;
    }
    LogMessage(infoMessage);
    return false;
  }
}