Class AbstractReplicator

  • All Implemented Interfaces:
    com.couchbase.lite.internal.Listenable<ReplicatorChange,​ReplicatorChangeListener>, java.lang.AutoCloseable
    Direct Known Subclasses:
    Replicator

    public abstract class AbstractReplicator
    extends com.couchbase.lite.internal.replicator.BaseReplicator
    implements com.couchbase.lite.internal.Listenable<ReplicatorChange,​ReplicatorChangeListener>
    A replicator for replicating document changes between a local database and a target database. The replicator can be bidirectional or either push or pull. The replicator can also be one-shot or continuous. The replicator runs asynchronously, so observe the status to be notified of progress.
    • Method Detail

      • start

        public void start()
        Start the replicator.
      • start

        public void start​(boolean resetCheckpoint)
        Start the replicator. This method does not wait for the replicator to start. The replicator runs asynchronously and reports its progress through replicator change notifications.
      • stop

        public void stop()
        Stop a running replicator. This method does not wait for the replicator to stop. When the replicator actually stops, it will a broadcast a new state, STOPPED, to change listeners.
      • getConfig

        @NonNull
        public ReplicatorConfiguration getConfig()
        The replicator's configuration.
        Returns:
        this replicator's configuration
      • getStatus

        @NonNull
        public ReplicatorStatus getStatus()
        The replicator's current status: its activity level and progress.
        Returns:
        this replicator's status
      • getServerCertificates

        @Nullable
        public java.util.List<java.security.cert.Certificate> getServerCertificates()
        The server certificates received from the server during the TLS handshake.
        Returns:
        this replicator's server certificates.
      • getPendingDocumentIds

        @Deprecated
        @NonNull
        public java.util.Set<java.lang.String> getPendingDocumentIds()
                                                              throws CouchbaseLiteException
        Deprecated.
        Use getPendingDocumentIds(Collection)
        Get a best effort list of documents in the default collection, that are still pending replication.
        Returns:
        a set of ids for documents in the default collection still awaiting replication.
        Throws:
        CouchbaseLiteException
      • getPendingDocumentIds

        @NonNull
        public java.util.Set<java.lang.String> getPendingDocumentIds​(@NonNull
                                                                     Collection collection)
                                                              throws CouchbaseLiteException
        Get a best effort list of documents in the passed collection that are still pending replication.
        Returns:
        a set of ids for documents in the passed collection still awaiting replication.
        Throws:
        CouchbaseLiteException
      • isDocumentPending

        @Deprecated
        public boolean isDocumentPending​(@NonNull
                                         java.lang.String docId)
                                  throws CouchbaseLiteException
        Deprecated.
        Use isDocumentPending(String, Collection)
        Best effort check to see if the document whose ID is passed is still pending replication.
        Parameters:
        docId - Document id
        Returns:
        true if the document is pending
        Throws:
        CouchbaseLiteException
      • isDocumentPending

        public boolean isDocumentPending​(@NonNull
                                         java.lang.String docId,
                                         @NonNull
                                         Collection collection)
                                  throws CouchbaseLiteException
        Best effort check to see if the document whose ID is passed is still pending replication.
        Parameters:
        docId - Document id
        Returns:
        true if the document is pending
        Throws:
        CouchbaseLiteException
      • addChangeListener

        @NonNull
        public ListenerToken addChangeListener​(@NonNull
                                               ReplicatorChangeListener listener)
        Adds a change listener for the changes in the replication status and progress.

        The changes will be delivered on the UI thread for the Android platform On other Java platforms, the callback will occur on the single threaded default executor.

        When developing a Java Desktop application using Swing or JavaFX that needs to update the UI after receiving the changes, make sure to schedule the UI update on the UI thread by using SwingUtilities.invokeLater(Runnable) or Platform.runLater(Runnable) respectively.

        Specified by:
        addChangeListener in interface com.couchbase.lite.internal.Listenable<ReplicatorChange,​ReplicatorChangeListener>
        Parameters:
        listener - callback
      • addChangeListener

        @NonNull
        public ListenerToken addChangeListener​(@Nullable
                                               java.util.concurrent.Executor executor,
                                               @NonNull
                                               ReplicatorChangeListener listener)
        Adds a change listener for the changes in the replication status and progress with an executor on which the changes will be posted to the listener. If the executor is not specified, the changes will be delivered on the UI thread on Android platform and on the single threaded default executor on other Java platforms
        Specified by:
        addChangeListener in interface com.couchbase.lite.internal.Listenable<ReplicatorChange,​ReplicatorChangeListener>
        Parameters:
        executor - executor on which events will be delivered
        listener - callback
      • addDocumentReplicationListener

        @NonNull
        public ListenerToken addDocumentReplicationListener​(@NonNull
                                                            DocumentReplicationListener listener)
        Adds a listener for receiving the replication status of the specified document. The status will be delivered on the UI thread for the Android platform and on the single threaded default executor on other platforms.

        When developing a Java Desktop application using Swing or JavaFX that needs to update the UI after receiving the status, make sure to schedule the UI update on the UI thread by using SwingUtilities.invokeLater(Runnable) or Platform.runLater(Runnable) respectively.

        Parameters:
        listener - callback
        Returns:
        A ListenerToken that can be used to remove the handler in the future.
      • addDocumentReplicationListener

        @NonNull
        public ListenerToken addDocumentReplicationListener​(@Nullable
                                                            java.util.concurrent.Executor executor,
                                                            @NonNull
                                                            DocumentReplicationListener listener)
        Adds a listener for receiving the replication status of the specified document with an executor on which the status will be posted to the listener. If the executor is not specified, the status will be delivered on the UI thread for the Android platform and on an arbitrary thread for the Java platform.
        Parameters:
        executor - executor on which events will be delivered
        listener - callback
      • removeChangeListener

        @Deprecated
        public void removeChangeListener​(@NonNull
                                         ListenerToken token)
        Deprecated.
        use ListenerToken.remove
        Remove the given ReplicatorChangeListener or DocumentReplicationListener from the this replicator.
        Parameters:
        token - returned by a previous call to addChangeListener or addDocumentListener.
      • toString

        @NonNull
        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object