1 /* 2 * Copyright (C) 2009, Constantine Plotnikov <constantine.plotnikov@gmail.com> 3 * Copyright (C) 2008-2009, Google Inc. 4 * Copyright (C) 2009, Google, Inc. 5 * Copyright (C) 2009, JetBrains s.r.o. 6 * Copyright (C) 2008, Robin Rosenberg <robin.rosenberg@dewire.com> 7 * Copyright (C) 2008, Shawn O. Pearce <spearce@spearce.org> and others 8 * 9 * This program and the accompanying materials are made available under the 10 * terms of the Eclipse Distribution License v. 1.0 which is available at 11 * https://www.eclipse.org/org/documents/edl-v10.php. 12 * 13 * SPDX-License-Identifier: BSD-3-Clause 14 */ 15 16 package org.eclipse.jgit.transport; 17 18 import java.io.IOException; 19 20 /** 21 * Create a remote "session" for executing remote commands. 22 * <p> 23 * Clients should subclass RemoteSession to create an alternate way for JGit to 24 * execute remote commands. (The client application may already have this 25 * functionality available.) Note that this class is just a factory for creating 26 * remote processes. If the application already has a persistent connection to 27 * the remote machine, RemoteSession may do nothing more than return a new 28 * RemoteProcess when exec is called. 29 */ 30 public interface RemoteSession { 31 /** 32 * Generate a new remote process to execute the given command. This function 33 * should also start execution and may need to create the streams prior to 34 * execution. 35 * 36 * @param commandName 37 * command to execute 38 * @param timeout 39 * timeout value, in seconds, for command execution 40 * @return a new remote process 41 * @throws java.io.IOException 42 * may be thrown in several cases. For example, on problems 43 * opening input or output streams or on problems connecting or 44 * communicating with the remote host. For the latter two cases, 45 * a TransportException may be thrown (a subclass of 46 * java.io.IOException). 47 */ 48 Process exec(String commandName, int timeout) throws IOException; 49 50 /** 51 * Obtain an {@link FtpChannel} for performing FTP operations over this 52 * {@link RemoteSession}. The default implementation returns {@code null}. 53 * 54 * @return the {@link FtpChannel} 55 * @since 5.2 56 */ 57 default FtpChannel getFtpChannel() { 58 return null; 59 } 60 61 /** 62 * Disconnect the remote session 63 */ 64 void disconnect(); 65 }