Package org.eclipse.jgit.transport.sshd
Class SshdSession
- java.lang.Object
-
- org.eclipse.jgit.transport.sshd.SshdSession
-
- All Implemented Interfaces:
RemoteSession
public class SshdSession extends java.lang.Object implements RemoteSession
An implementation ofRemoteSession
based on Apache MINA sshd.- Since:
- 5.2
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static interface
SshdSession.FtpOperation<T>
Helper interface likeSupplier
, but possibly raising anIOException
.private static class
SshdSession.SshdExecProcess
private class
SshdSession.SshdFtpChannel
-
Field Summary
Fields Modifier and Type Field Description private org.apache.sshd.client.SshClient
client
private java.util.concurrent.CopyOnWriteArrayList<SessionCloseListener>
listeners
private static org.slf4j.Logger
LOG
private org.apache.sshd.client.session.ClientSession
session
private URIish
uri
-
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 void
addCloseListener(SessionCloseListener listener)
Adds aSessionCloseListener
to this session.(package private) void
connect(java.time.Duration timeout)
void
disconnect()
Disconnects the remote session.private void
disconnect(java.lang.Throwable reason)
java.lang.Process
exec(java.lang.String commandName, int timeout)
Creates a new remoteProcess
to execute the given command.FtpChannel
getFtpChannel()
Obtain anFtpChannel
to perform SFTP operations in thisSshdSession
.private void
notifyCloseListeners()
void
removeCloseListener(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
-
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
-
addCloseListener
public void addCloseListener(@NonNull SessionCloseListener listener)
Adds aSessionCloseListener
to this session. Has no effect if the givenlistener
is 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.IOException
Description copied from interface:RemoteSession
Creates a new remoteProcess
to execute the given command. The returned process's streams exist and are connected, and execution of the process is already started.- Specified by:
exec
in 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).
-
getFtpChannel
@NonNull public FtpChannel getFtpChannel()
Obtain anFtpChannel
to perform SFTP operations in thisSshdSession
.- Specified by:
getFtpChannel
in interfaceRemoteSession
- Returns:
- the
FtpChannel
-
disconnect
public void disconnect()
Description copied from interface:RemoteSession
Disconnects the remote session.- Specified by:
disconnect
in interfaceRemoteSession
-
disconnect
private void disconnect(java.lang.Throwable reason)
-
-