| /* |
| * Copyright (c) 2019, Google LLC and others |
| * |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Distribution License v. 1.0 which is available at |
| * http://www.eclipse.org/org/documents/edl-v10.php. |
| * |
| * SPDX-License-Identifier: BSD-3-Clause |
| */ |
| |
| package org.eclipse.jgit.transport; |
| |
| import java.io.IOException; |
| import java.util.List; |
| import java.util.Set; |
| |
| import org.eclipse.jgit.lib.ObjectId; |
| import org.eclipse.jgit.lib.ProgressMonitor; |
| import org.eclipse.jgit.lib.Repository; |
| import org.eclipse.jgit.revwalk.RevWalk; |
| |
| /** |
| * Checks that a received pack only depends on objects which are reachable from |
| * a defined set of references. |
| * |
| * @since 5.7 |
| */ |
| public interface ConnectivityChecker { |
| |
| /** |
| * Checks connectivity of the commit graph after pack uploading. |
| * |
| * @param connectivityCheckInfo |
| * Input for the connectivity check. |
| * @param haves |
| * Set of references known for client. |
| * @param pm |
| * Monitor to publish progress to. |
| * @throws IOException |
| * an error occurred during connectivity checking. |
| * |
| */ |
| void checkConnectivity(ConnectivityCheckInfo connectivityCheckInfo, |
| Set<ObjectId> haves, ProgressMonitor pm) |
| throws IOException; |
| |
| /** |
| * POJO which is used to pass all information which is needed to perform |
| * connectivity check. |
| */ |
| public static class ConnectivityCheckInfo { |
| private Repository repository; |
| |
| private PackParser parser; |
| |
| private boolean checkObjects; |
| |
| private List<ReceiveCommand> commands; |
| |
| private RevWalk walk; |
| |
| /** |
| * @return database we write the stored objects into. |
| */ |
| public Repository getRepository() { |
| return repository; |
| } |
| |
| /** |
| * @param repository |
| * set database we write the stored objects into. |
| */ |
| public void setRepository(Repository repository) { |
| this.repository = repository; |
| } |
| |
| /** |
| * @return the parser used to parse pack. |
| */ |
| public PackParser getParser() { |
| return parser; |
| } |
| |
| /** |
| * @param parser |
| * the parser to set |
| */ |
| public void setParser(PackParser parser) { |
| this.parser = parser; |
| } |
| |
| /** |
| * @return if checker should check objects. |
| */ |
| public boolean isCheckObjects() { |
| return checkObjects; |
| } |
| |
| /** |
| * @param checkObjects |
| * set if checker should check referenced objects outside of |
| * the received pack are reachable. |
| */ |
| public void setCheckObjects(boolean checkObjects) { |
| this.checkObjects = checkObjects; |
| } |
| |
| /** |
| * @return command received by the current request. |
| */ |
| public List<ReceiveCommand> getCommands() { |
| return commands; |
| } |
| |
| /** |
| * @param commands |
| * set command received by the current request. |
| */ |
| public void setCommands(List<ReceiveCommand> commands) { |
| this.commands = commands; |
| } |
| |
| /** |
| * @param walk |
| * the walk to parse commits |
| */ |
| public void setWalk(RevWalk walk) { |
| this.walk = walk; |
| } |
| |
| /** |
| * @return the walk to parse commits |
| */ |
| public RevWalk getWalk() { |
| return walk; |
| } |
| } |
| } |