blob: 428a6dba1d6baff190e3cddf19fac1c4ab19eaf6 [file] [log] [blame]
/*-
* Copyright (C) 2002, 2018, Oracle and/or its affiliates. All rights reserved.
*
* This file was distributed by Oracle as part of a version of Oracle Berkeley
* DB Java Edition made available at:
*
* http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html
*
* Please see the LICENSE file included in the top-level directory of the
* appropriate version of Oracle Berkeley DB Java Edition for a copy of the
* license and additional information.
*/
package com.sleepycat.je;
import java.io.File;
import java.io.IOException;
import java.net.URL;
/**
* @hidden For internal use: automatic backups
*
* Interface used by Backup to determine archive locations for copying backup
* files.
*
* <p>Unexpected exceptions thrown when backup calls methods on an
* implementation of this interface will cause the backup facility to be
* shutdown, but will leave the environment open. {@link InterruptedException}
* and {@link IOException} are expected exceptions, while {@link
* IllegalArgumentException}, other runtime exceptions, and errors are treated
* as unexpected.
*/
public interface BackupArchiveLocation {
/**
* The initialize method should be invoked exactly once after the creation
* of the object via its no arguments constructor.
*
* @param nodeName the node name of the environment associated with the
* backup
* @param configFile a pathname used to initialize this object. It could,
* for example, be the directory under which all files should be archived,
* or it could be the name of a properties file that contains values that
* will affect the behavior of the implementation. The format and meaning
* of the config file is private to the implementation.
*
* @throws InterruptedException if the initialize operation is interrupted
* @throws IllegalArgumentException if the configuration was invalid
* @throws IOException if some irrecoverable I/O issue was encountered
* during initialization
*/
void initialize(String nodeName, File configFile)
throws InterruptedException, IOException;
/**
* Returns a URL that represents the location where a backup file should be
* stored. The result should be unique for a given environment and
* backup path.
*
* @param relativeArchivePath the path of the backup file
* @return the archive URL location
*/
URL getArchiveLocation(String relativeArchivePath);
}