Ejemplo n.º 1
0
        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"));
        }
Ejemplo n.º 2
0
        /// <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"));
        }
Ejemplo n.º 3
0
        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");
            }));
        }
Ejemplo n.º 4
0
        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");
            }));
        }
Ejemplo n.º 5
0
 internal ListenerToken([NotNull] CouchbaseEventHandler handler, [NotNull] string type)
 {
     EventHandler = handler;
     Type         = type;
 }