public ListenerToken AddChangeListener([CanBeNull] TaskScheduler scheduler, EventHandler <ReplicatorStatusChangedEventArgs> handler) { CBDebug.MustNotBeNull(Log.To.Sync, Tag, nameof(handler), handler); var cbHandler = new CouchbaseEventHandler <ReplicatorStatusChangedEventArgs>(handler, scheduler); _statusChanged.Add(cbHandler); return(new ListenerToken(cbHandler, "repl")); }
/// <summary> /// Adds a document ended listener on this replication object (similar to a C# event, but /// with the ability to specify a <see cref="TaskScheduler"/> to schedule the /// handler to run on) /// </summary> /// <param name="scheduler">The <see cref="TaskScheduler"/> to run the <c>handler</c> on /// (<c>null</c> for default)</param> /// <param name="handler">The logic to run during the callback</param> /// <returns>A token to remove the handler later</returns> public ListenerToken AddDocumentReplicationListener([CanBeNull] TaskScheduler scheduler, [NotNull] EventHandler <DocumentReplicationEventArgs> handler) { CBDebug.MustNotBeNull(WriteLog.To.Sync, Tag, nameof(handler), handler); Config.Options.ProgressLevel = ReplicatorProgressLevel.PerDocument; var cbHandler = new CouchbaseEventHandler <DocumentReplicationEventArgs>(handler, scheduler); _documentEndedUpdate.Add(cbHandler); return(new ListenerToken(cbHandler, "repl")); }
public ListenerToken AddChangeListener([CanBeNull] TaskScheduler scheduler, EventHandler <DatabaseChangedEventArgs> handler) { CBDebug.MustNotBeNull(Log.To.Database, Tag, nameof(handler), handler); return(ThreadSafety.DoLocked(() => { CheckOpen(); var cbHandler = new CouchbaseEventHandler <DatabaseChangedEventArgs>(handler, scheduler); _databaseChanged.Add(cbHandler); return new ListenerToken(cbHandler, "db"); })); }
public ListenerToken AddDocumentChangeListener(string id, [CanBeNull] TaskScheduler scheduler, EventHandler <DocumentChangedEventArgs> handler) { CBDebug.MustNotBeNull(Log.To.Database, Tag, nameof(id), id); CBDebug.MustNotBeNull(Log.To.Database, Tag, nameof(handler), handler); return(ThreadSafety.DoLocked(() => { CheckOpen(); var cbHandler = new CouchbaseEventHandler <string, DocumentChangedEventArgs>(handler, id, scheduler); var count = _documentChanged.Add(cbHandler); if (count == 0) { var docObs = new DocumentObserver(_c4db, id, _DocObserverCallback, this); _docObs[id] = docObs; } return new ListenerToken(cbHandler, "doc"); })); }
internal ListenerToken([NotNull] CouchbaseEventHandler handler, [NotNull] string type) { EventHandler = handler; Type = type; }