package org.eclipse.buckminster.p2.remote; import java.net.URI; import org.eclipse.buckminster.p2.remote.change.SynchronizationBlock; import org.eclipse.equinox.internal.provisional.p2.core.ProvisionException; import org.eclipse.equinox.internal.provisional.p2.query.Query; public interface IRepositoryFacade { /** * Returns a synchronization block containing all changes that has been made to a repository * since the change number indicated by sequenceNumber * @param sequenceNumber The number of the last change known by this client * @return A synchronization block containing all changes. * @throws ProvisionException */ SynchronizationBlock getChanges(long sequenceNumber) throws ProvisionException; /** * Returns the name of this facade * @return The name of the facade */ String getName(); /** * Return a stream that can produce the data for the repository. * @return */ IRepositoryDataStream getRepositoryData() throws ProvisionException; /** * Register a mirror with this facade. * @param repositoryMirror A URI denoting the repository that should be mirrored by this facade. * @param query A filter used for the mirroring, can be null in which case everything is * mirrored. The query must be serializable. * @throws ProvisionException */ void registerMirror(URI repositoryMirror, Query query) throws ProvisionException; }