/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt * or http://forgerock.org/license/CDDLv1.0.html. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at legal-notices/CDDLv1_0.txt. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: * Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END * * * 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. * <p> * 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(); }