/* * The contents of this file are subject to the terms of the Common Development and * Distribution License (the License). You may not use this file except in compliance with the * License. * * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the * specific language governing permission and limitations under the License. * * When distributing Covered Software, include this CDDL Header Notice in each file and include * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL * Header, with the fields enclosed by brackets [] replaced by your own identifying * information: "Portions Copyright [year] [name of copyright owner]". * * Copyright 2013 ForgeRock AS. */ package org.opends.server.replication.server.changelog.api; /** * This interface is the entry point for the changelog database which stores the * replication data on persistent storage. It allows to control the overall * database or access more specialized interfaces. */ public interface ChangelogDB { /** * Initializes the replication database by reading its previous state and * building the relevant ReplicaDBs according to the previous state. This * method must be called once before using the ChangelogDB. */ void initializeDB(); /** * Sets the purge delay for the replication database. Can be called while the * database is running. *
* Purging happens on a best effort basis, i.e. the purge delay is used by the * replication database to know which data can be purged, but there are no * guarantees on when the purging will actually happen. * * @param delayInMillis * the purge delay in milliseconds */ void setPurgeDelay(long delayInMillis); /** * Sets whether the replication database must compute change numbers for * replicated changes. Change numbers are computed using a separate new * thread. * * @param computeChangeNumber * whether to compute change numbers for replicated changes * @throws ChangelogException * If a database problem happened */ void setComputeChangeNumber(boolean computeChangeNumber) throws ChangelogException; /** * Shutdown the replication database. * * @throws ChangelogException * If a database problem happened */ void shutdownDB() throws ChangelogException; /** * Removes the changelog database directory. * * @throws ChangelogException * If a database problem happened */ void removeDB() throws ChangelogException; /** * Returns the {@link ChangeNumberIndexDB} object. * * @return the {@link ChangeNumberIndexDB} object */ ChangeNumberIndexDB getChangeNumberIndexDB(); /** * Returns the {@link ReplicationDomainDB} object. * * @return the {@link ReplicationDomainDB} object */ ReplicationDomainDB getReplicationDomainDB(); }