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, 2020 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 * An abstraction of a remote "session" for executing remote commands. 22 */ 23 public interface RemoteSession { 24 25 /** 26 * Creates a new remote {@link Process} to execute the given command. The 27 * returned process's streams exist and are connected, and execution of the 28 * process is already started. 29 * 30 * @param commandName 31 * command to execute 32 * @param timeout 33 * timeout value, in seconds, for creating the remote process 34 * @return a new remote process, already started 35 * @throws java.io.IOException 36 * may be thrown in several cases. For example, on problems 37 * opening input or output streams or on problems connecting or 38 * communicating with the remote host. For the latter two cases, 39 * a TransportException may be thrown (a subclass of 40 * java.io.IOException). 41 */ 42 Process exec(String commandName, int timeout) throws IOException; 43 44 /** 45 * Obtains an {@link FtpChannel} for performing FTP operations over this 46 * {@link RemoteSession}. The default implementation returns {@code null}. 47 * 48 * @return the {@link FtpChannel} 49 * @since 5.2 50 */ 51 default FtpChannel getFtpChannel() { 52 return null; 53 } 54 55 /** 56 * Disconnects the remote session. 57 */ 58 void disconnect(); 59 }