Package org.eclipse.jgit.transport.sshd
Class SshdSession
- java.lang.Object
-
- org.eclipse.jgit.transport.sshd.SshdSession
-
- All Implemented Interfaces:
RemoteSession,RemoteSession2
public class SshdSession extends java.lang.Object implements RemoteSession2
An implementation ofRemoteSessionbased on Apache MINA sshd.- Since:
- 5.2
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static interfaceSshdSession.FtpOperation<T>Helper interface likeSupplier, but possibly raising anIOException.private static classSshdSession.SshdExecProcessprivate classSshdSession.SshdFtpChannel
-
Field Summary
Fields Modifier and Type Field Description private org.apache.sshd.client.SshClientclientprivate java.util.concurrent.CopyOnWriteArrayList<SessionCloseListener>listenersprivate static org.slf4j.LoggerLOGprivate static intMAX_DEPTHprivate org.apache.sshd.client.session.ClientSessionsessionprivate static java.util.regex.PatternSHORT_SSH_FORMATprivate URIishuri
-
Constructor Summary
Constructors Constructor Description SshdSession(URIish uri, java.util.function.Supplier<org.apache.sshd.client.SshClient> clientFactory)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddCloseListener(SessionCloseListener listener)Adds aSessionCloseListenerto this session.private voidclose(java.io.Closeable toClose, java.lang.Throwable error)(package private) voidconnect(java.time.Duration timeout)private org.apache.sshd.client.session.ClientSessionconnect(org.apache.sshd.client.config.hosts.HostConfigEntry config, org.apache.sshd.common.AttributeRepository context, java.time.Duration timeout)private org.apache.sshd.client.session.ClientSessionconnect(URIish target, java.util.List<URIish> jumps, org.apache.sshd.common.future.SshFutureListener<org.apache.sshd.common.future.CloseFuture> listener, java.time.Duration timeout, int depth)private java.util.List<URIish>determineHops(java.util.List<URIish> currentHops, org.apache.sshd.client.config.hosts.HostConfigEntry hostConfig, java.lang.String host)voiddisconnect()Disconnects the remote session.private voiddisconnect(java.lang.Throwable reason)java.lang.Processexec(java.lang.String commandName, int timeout)Creates a new remoteProcessto execute the given command.java.lang.Processexec(java.lang.String commandName, java.util.Map<java.lang.String,java.lang.String> environment, int timeout)Creates a new remoteProcessto execute the given command.FtpChannelgetFtpChannel()Obtain anFtpChannelto perform SFTP operations in thisSshdSession.private org.apache.sshd.client.config.hosts.HostConfigEntrygetHostConfig(java.lang.String username, java.lang.String host, int port)private voidnotifyCloseListeners()private java.util.List<URIish>parseProxyJump(java.lang.String proxyJump)voidremoveCloseListener(SessionCloseListener listener)Removes the givenlistener; has no effect if the listener is not currently registered with this session.
-
-
-
Field Detail
-
LOG
private static final org.slf4j.Logger LOG
-
SHORT_SSH_FORMAT
private static final java.util.regex.Pattern SHORT_SSH_FORMAT
-
MAX_DEPTH
private static final int MAX_DEPTH
- See Also:
- Constant Field Values
-
listeners
private final java.util.concurrent.CopyOnWriteArrayList<SessionCloseListener> listeners
-
uri
private final URIish uri
-
client
private org.apache.sshd.client.SshClient client
-
session
private org.apache.sshd.client.session.ClientSession session
-
-
Constructor Detail
-
SshdSession
SshdSession(URIish uri, java.util.function.Supplier<org.apache.sshd.client.SshClient> clientFactory)
-
-
Method Detail
-
connect
void connect(java.time.Duration timeout) throws java.io.IOException- Throws:
java.io.IOException
-
connect
private org.apache.sshd.client.session.ClientSession connect(URIish target, java.util.List<URIish> jumps, org.apache.sshd.common.future.SshFutureListener<org.apache.sshd.common.future.CloseFuture> listener, java.time.Duration timeout, int depth) throws java.io.IOException
- Throws:
java.io.IOException
-
connect
private org.apache.sshd.client.session.ClientSession connect(org.apache.sshd.client.config.hosts.HostConfigEntry config, org.apache.sshd.common.AttributeRepository context, java.time.Duration timeout) throws java.io.IOException- Throws:
java.io.IOException
-
close
private void close(java.io.Closeable toClose, java.lang.Throwable error)
-
getHostConfig
private org.apache.sshd.client.config.hosts.HostConfigEntry getHostConfig(java.lang.String username, java.lang.String host, int port) throws java.io.IOException- Throws:
java.io.IOException
-
determineHops
private java.util.List<URIish> determineHops(java.util.List<URIish> currentHops, org.apache.sshd.client.config.hosts.HostConfigEntry hostConfig, java.lang.String host) throws java.io.IOException
- Throws:
java.io.IOException
-
parseProxyJump
private java.util.List<URIish> parseProxyJump(java.lang.String proxyJump) throws java.net.URISyntaxException
- Throws:
java.net.URISyntaxException
-
addCloseListener
public void addCloseListener(@NonNull SessionCloseListener listener)
Adds aSessionCloseListenerto this session. Has no effect if the givenlisteneris already registered with this session.- Parameters:
listener- to add
-
removeCloseListener
public void removeCloseListener(@NonNull SessionCloseListener listener)
Removes the givenlistener; has no effect if the listener is not currently registered with this session.- Parameters:
listener- to remove
-
notifyCloseListeners
private void notifyCloseListeners()
-
exec
public java.lang.Process exec(java.lang.String commandName, int timeout) throws java.io.IOExceptionDescription copied from interface:RemoteSessionCreates a new remoteProcessto execute the given command. The returned process's streams exist and are connected, and execution of the process is already started.- Specified by:
execin interfaceRemoteSession- Parameters:
commandName- command to executetimeout- timeout value, in seconds, for creating the remote process- Returns:
- a new remote process, already started
- Throws:
java.io.IOException- may be thrown in several cases. For example, on problems opening input or output streams or on problems connecting or communicating with the remote host. For the latter two cases, a TransportException may be thrown (a subclass of java.io.IOException).
-
exec
public java.lang.Process exec(java.lang.String commandName, java.util.Map<java.lang.String,java.lang.String> environment, int timeout) throws java.io.IOExceptionDescription copied from interface:RemoteSession2Creates a new remoteProcessto execute the given command. The returned process's streams exist and are connected, and execution of the process is already started.- Specified by:
execin interfaceRemoteSession2- Parameters:
commandName- command to executeenvironment- environment variables to pass ontimeout- timeout value, in seconds, for creating the remote process- Returns:
- a new remote process, already started
- Throws:
java.io.IOException- may be thrown in several cases. For example, on problems opening input or output streams or on problems connecting or communicating with the remote host. For the latter two cases, a TransportException may be thrown (a subclass of java.io.IOException).
-
getFtpChannel
@NonNull public FtpChannel getFtpChannel()
Obtain anFtpChannelto perform SFTP operations in thisSshdSession.- Specified by:
getFtpChannelin interfaceRemoteSession- Returns:
- the
FtpChannel
-
disconnect
public void disconnect()
Description copied from interface:RemoteSessionDisconnects the remote session.- Specified by:
disconnectin interfaceRemoteSession
-
disconnect
private void disconnect(java.lang.Throwable reason)
-
-