You can implement SyncNow for message-based synchronization applications for Windows or Windows Mobile using the Sybase.Persistence.CallbackHandler. The onConnectionStatus methods provide the implementation.
A sample SyncNow method looks like:
public void SyncNow() { int connStatus = Sybase.Persistence.MessagingClient.ConnectionStatus; int MAX_WAIT_TIME_OUT = 300; // 5 minutes int timeout = 0; while (connStatus != DeviceConnectionStatus.CONNECTED) { timeout++; Thread.Sleep(1000); if (timeout >= MAX_WAIT_TIME_OUT) { throw new Sybase.Persistence.PersistenceException("Waiting timeout: " + MAX_WAIT_TIME_OUT + " seconds"); } connStatus = Sybase.Persistence.MessagingClient.ConnectionStatus; } if (!DsTestDB.IsSubscribed()) { DsTestDB.LoginToSync("test", "test123"); DsTestDB.Subscribe(); } DsTestDB.BeginSynchronize(); int MAX_SYNC_TIMEOUT = 3600; // one hour ? timeout = 0; while (!TestMain.syncFinished) { timeout++; Thread.Sleep(1000); if (timeout >= MAX_SYNC_TIMEOUT) { throw new Sybase.Persistence.PersistenceException("Waiting SYNC timeout: " + MAX_SYNC_TIMEOUT + "seconds"); } } }
public class TextResponseHandler : DefaultCallbackHandler { public override void OnConnectionStatusChange(int connStatus, int connType, int errorCode, string errorMessage) { Console.WriteLine("Device Connection status changed to : " + connStatus); if (errorMessage != null && errorMessage.Length > 0) { Console.WriteLine("Connection error: " + errorMessage); } } public override SynchronizationAction OnSynchronize(Sybase.Collections.GenericList<ISynchronizationGroup> groups, Sybase.Persistence.SynchronizationContext context) { Console.WriteLine("synchronize request processed returned. "); SynchronizationStatus status = context.Status; if (status == SynchronizationStatus.FINISHING) { Console.WriteLine("synchronizeResult"); } else if (status == SynchronizationStatus.ERROR) { Console.WriteLine("synchronizeFailed"); } lock (typeof(TestMain)) { TestMain.syncFinished = true; } return SynchronizationAction.CONTINUE; } ...... }
public override void OnConnectionStatusChange(int connStatus, int connType, int errorCode, string errorMessage) { Console.WriteLine("Device Connection status changed to : " + connStatus); if (errorMessage != null && errorMessage.Length > 0) { Console.WriteLine("Connection error: " + errorMessage); } }