Package org.eclipse.jgit.transport.sshd
Class SshdSession
java.lang.Object
org.eclipse.jgit.transport.sshd.SshdSession
- All Implemented Interfaces:
RemoteSession,RemoteSession2
An implementation of
RemoteSession based on Apache MINA sshd.- Since:
- 5.2
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static classprivate class -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate org.apache.sshd.client.SshClientprivate final CopyOnWriteArrayList<SessionCloseListener>private static final org.slf4j.Loggerprivate static final intprivate org.apache.sshd.client.session.ClientSessionprivate static final Patternprivate final URIish -
Constructor Summary
ConstructorsConstructorDescriptionSshdSession(URIish uri, Supplier<org.apache.sshd.client.SshClient> clientFactory) -
Method Summary
Modifier and TypeMethodDescriptionvoidaddCloseListener(SessionCloseListener listener) Adds aSessionCloseListenerto this session.private void(package private) voidprivate org.apache.sshd.client.session.ClientSessionconnect(org.apache.sshd.client.config.hosts.HostConfigEntry config, org.apache.sshd.common.AttributeRepository context, Duration timeout) private org.apache.sshd.client.session.ClientSessionconnect(URIish target, List<URIish> jumps, org.apache.sshd.common.future.SshFutureListener<org.apache.sshd.common.future.CloseFuture> listener, Duration timeout, int depth) determineHops(List<URIish> currentHops, org.apache.sshd.client.config.hosts.HostConfigEntry hostConfig, String host) voidDisconnects the remote session.private voiddisconnect(Throwable reason) Creates a new remoteProcessto execute the given command.Creates a new remoteProcessto execute the given command.Obtain anFtpChannelto perform SFTP operations in thisSshdSession.private org.apache.sshd.client.config.hosts.HostConfigEntrygetHostConfig(String username, String host, int port) private voidparseProxyJump(String proxyJump) voidremoveCloseListener(SessionCloseListener listener) Removes the givenlistener; has no effect if the listener is not currently registered with this session.
-
Field Details
-
LOG
private static final org.slf4j.Logger LOG -
SHORT_SSH_FORMAT
-
MAX_DEPTH
private static final int MAX_DEPTH- See Also:
-
listeners
-
uri
-
client
private org.apache.sshd.client.SshClient client -
session
private org.apache.sshd.client.session.ClientSession session
-
-
Constructor Details
-
SshdSession
-
-
Method Details
-
connect
- Throws:
IOException
-
connect
private org.apache.sshd.client.session.ClientSession connect(URIish target, List<URIish> jumps, org.apache.sshd.common.future.SshFutureListener<org.apache.sshd.common.future.CloseFuture> listener, Duration timeout, int depth) throws IOException - Throws:
IOException
-
connect
private org.apache.sshd.client.session.ClientSession connect(org.apache.sshd.client.config.hosts.HostConfigEntry config, org.apache.sshd.common.AttributeRepository context, Duration timeout) throws IOException - Throws:
IOException
-
close
-
getHostConfig
private org.apache.sshd.client.config.hosts.HostConfigEntry getHostConfig(String username, String host, int port) throws IOException - Throws:
IOException
-
determineHops
private List<URIish> determineHops(List<URIish> currentHops, org.apache.sshd.client.config.hosts.HostConfigEntry hostConfig, String host) throws IOException - Throws:
IOException
-
parseProxyJump
- Throws:
URISyntaxException
-
addCloseListener
Adds aSessionCloseListenerto this session. Has no effect if the givenlisteneris already registered with this session.- Parameters:
listener- to add
-
removeCloseListener
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
Description 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:
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 Process exec(String commandName, Map<String, String> environment, int timeout) throws 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:
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
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
-