blob: 02fd3d849a2c8211d29535068e744b7e9e4bf946 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011, 2013 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.equinox.region;
import java.io.*;
/**
* A region digraph persistence is used to persist the state of a {@link RegionDigraph}.
* <p />
* <strong>Concurrent Semantics</strong><br />
*
* Implementations of this interface must be thread safe.
* @noimplement This interface is not intended to be implemented by clients.
*/
public interface RegionDigraphPersistence {
/**
* Creates a new digraph and reads the content of the digraph from the provided input. The provided input must have
* been persisted using the {@link #save(RegionDigraph, OutputStream)} method.
* <p />
* Note that the returned digraph is disconnected from the OSGi runtime. Any modifications made to the returned
* digraph will not affect the OSGi runtime behavior of the bundles installed in the running framework.
* <p />
* The specified stream remains open after this method returns.
*
* @param input an input stream to read a digraph from.
* @return the new digraph
* @throws IOException if error occurs reading the digraph.
* @throws IllegalArgumentException if the input stream is not a digraph or has an incompatible persistent version
*/
RegionDigraph load(InputStream input) throws IOException;
/**
* Writes the specified {@link RegionDigraph} to the provided output in a form suitable for using the
* {@link #load(InputStream)} method.
* <p />
* After the digraph has been written, the output stream is flushed. The output stream remains open after this
* method returns.
*
* @param digraph a digraph to be written.
* @param output an output stream to write a digraph to.
* @throws IOException if error occurs writing the digraph.
*/
void save(RegionDigraph digraph, OutputStream output) throws IOException;
}