Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
                }
            }
        }
Exemplo n.º 3
0
 /// <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);
 }
Exemplo n.º 4
0
 /// <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);
 }
Exemplo n.º 5
0
 public abstract void RemoveFullSyncChangeListener(string db, C8oFullSyncChangeListener listener);