public override void AddFullSyncChangeListener(string db, C8oFullSyncChangeListener listener) { if (db == null || db.Length == 0) { db = c8o.DefaultDatabaseName; } ISet <C8oFullSyncChangeListener> listeners; if (fullSyncChangeListeners.ContainsKey(db)) { listeners = fullSyncChangeListeners[db]; } else { listeners = new HashSet <C8oFullSyncChangeListener>(); fullSyncChangeListeners[db] = listeners; EventHandler <DatabaseChangeEventArgs> evtHandler = (sender, e) => { c8o.RunBG(() => { var changes = new JObject(); var docs = new JArray(); changes["changes"] = docs; changes["isExternal"] = e.IsExternal; foreach (var change in e.Changes) { var doc = new JObject(); doc["id"] = change.DocumentId; doc["isConflict"] = change.IsConflict; doc["isCurrentRevision"] = change.IsCurrentRevision; doc["isExpiration"] = change.IsExpiration; doc["revisionId"] = change.RevisionId; doc["sourceUrl"] = change.SourceUrl; docs.Add(doc); } foreach (var handler in listeners) { handler(changes); } }); }; GetOrCreateFullSyncDatabase(db).Result.Database.Changed += evtHandler; cblChangeListeners[db] = evtHandler; } listeners.Add(listener); }
public override void RemoveFullSyncChangeListener(string db, C8oFullSyncChangeListener listener) { if (db == null || db.Length == 0) { db = c8o.DefaultDatabaseName; } if (fullSyncChangeListeners.ContainsKey(db)) { var listeners = fullSyncChangeListeners[db]; listeners.Remove(listener); if (listeners.Count == 0) { GetOrCreateFullSyncDatabase(db).Result.Database.Changed -= cblChangeListeners[db]; fullSyncChangeListeners.Remove(db); cblChangeListeners.Remove(db); } } }
/// <summary> /// Add a listener to monitor all changes of the 'db'. /// </summary> /// <param name="db">the name of the fullsync database to monitor. Use the default database for a blank or a null value.</param> /// <param name="listener">the listener to trigger on change.</param> public void AddFullSyncChangeListener(string db, C8oFullSyncChangeListener listener) { c8oFullSync.AddFullSyncChangeListener(db, listener); }
/// <summary> /// Remove a listener for changes of the 'db'. /// </summary> /// <param name="db">the name of the fullsync database to monitor. Use the default database for a blank or a null value.</param> /// <param name="listener">the listener instance to remove.</param> public void RemoveFullSyncChangeListener(string db, C8oFullSyncChangeListener listener) { c8oFullSync.RemoveFullSyncChangeListener(db, listener); }
public abstract void RemoveFullSyncChangeListener(string db, C8oFullSyncChangeListener listener);