Class AbstractConnectionService
java.lang.Object
org.apache.sshd.common.util.logging.AbstractLoggingBean
org.apache.sshd.common.util.closeable.IoBaseCloseable
org.apache.sshd.common.util.closeable.AbstractCloseable
org.apache.sshd.common.util.closeable.AbstractInnerCloseable
org.apache.sshd.common.session.helpers.AbstractConnectionService
- All Implemented Interfaces:
Closeable
,AutoCloseable
,Channel
,Closeable
,PortForwardingEventListenerManager
,PortForwardingEventListenerManagerHolder
,PropertyResolver
,Service
,ConnectionService
,SessionContextHolder
,SessionHeartbeatController
,SessionHolder<Session>
,UnknownChannelReferenceHandlerManager
- Direct Known Subclasses:
ClientConnectionService
,ServerConnectionService
public abstract class AbstractConnectionService
extends AbstractInnerCloseable
implements ConnectionService
Base implementation of ConnectionService.
- Author:
- Apache MINA SSHD Project
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.sshd.common.util.closeable.AbstractCloseable
AbstractCloseable.State
Nested classes/interfaces inherited from interface org.apache.sshd.common.session.SessionHeartbeatController
SessionHeartbeatController.HeartbeatType
-
Field Summary
Modifier and TypeFieldDescriptionMap of channels keyed by the identifierstatic final String
Used inSSH_MSH_IGNORE
messages for the keep-alive mechanismprotected final AtomicLong
protected final AtomicLong
Next channel identifier - a UINT32 represented as a longstatic final IntUnaryOperator
Default growth factor function used to resize response buffersFields inherited from class org.apache.sshd.common.util.closeable.AbstractCloseable
closeFuture, futureLock, state
Fields inherited from class org.apache.sshd.common.util.logging.AbstractLoggingBean
log
Fields inherited from interface org.apache.sshd.common.PropertyResolver
EMPTY
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
Add a port forwarding listenerboolean
void
channelClose
(Buffer buffer) Close a channel due to a close packet receivedvoid
channelData
(Buffer buffer) Process incoming data on a channelvoid
channelEof
(Buffer buffer) Process end of file on a channelvoid
channelExtendedData
(Buffer buffer) Process incoming extended data on a channelvoid
channelFailure
(Buffer buffer) Process a failure on a channelprotected void
channelOpen
(Buffer buffer) void
channelOpenConfirmation
(Buffer buffer) void
channelOpenFailure
(Buffer buffer) void
channelRequest
(Buffer buffer) Service a request on a channelvoid
channelSuccess
(Buffer buffer) Process a success on a channelvoid
channelWindowAdjust
(Buffer buffer) Process a window adjust packet on a channelprotected AgentForwardSupport
createAgentForwardSupport
(Session session) protected Forwarder
createForwardingFilter
(Session session) protected X11ForwardSupport
createX11ForwardSupport
(Session session) protected void
futureDone
(IoWriteFuture future) protected Channel
getChannel
(byte cmd, long recipient, Buffer buffer) protected Channel
getChannel
(byte cmd, Buffer buffer) Retrieve the channel designated by the given packetRetrieve the forwarder instanceprotected Closeable
protected long
protected IoWriteFuture
globalRequest
(Buffer buffer) Process global requestsprotected IoWriteFuture
handleUnknownRequest
(Buffer buffer, String req, boolean wantReply) boolean
protected void
preClose()
void
Service the request.long
registerChannel
(Channel channel) Register a newly created channel with a new unique identifiervoid
Remove a port forwarding listenerboolean
protected void
requestFailure
(Buffer buffer) protected void
requestSuccess
(Buffer buffer) Check if current manager has a specific handler set for it - if not, try and resolve one from the "parent" container (if any)protected IoWriteFuture
sendChannelOpenFailure
(Buffer buffer, long sender, int reasonCode, String message, String lang) protected IoWriteFuture
sendGlobalResponse
(Buffer buffer, String req, RequestHandler.Result result, boolean wantReply) protected boolean
Sends a heartbeat message/packetvoid
setAllowMoreSessions
(boolean allow) void
void
start()
protected ScheduledFuture<?>
protected void
toString()
void
unregisterChannel
(Channel channel) Remove this channel from the list of managed channelsMethods inherited from class org.apache.sshd.common.util.closeable.AbstractInnerCloseable
doCloseGracefully, doCloseImmediately
Methods inherited from class org.apache.sshd.common.util.closeable.AbstractCloseable
addCloseFutureListener, builder, close, getFutureLock, isClosed, isClosing, removeCloseFutureListener
Methods inherited from class org.apache.sshd.common.util.logging.AbstractLoggingBean
debug, debug, debug, debug, debug, error, error, error, error, error, getSimplifiedLogger, info, info, warn, warn, warn, warn, warn, warn, warn, warn
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.apache.sshd.common.Closeable
addCloseFutureListener, close, close, isClosed, isClosing, isOpen, removeCloseFutureListener
Methods inherited from interface org.apache.sshd.common.PropertyResolver
getBoolean, getBooleanProperty, getCharset, getInteger, getIntProperty, getLong, getLongProperty, getObject, getString, getStringProperty, isEmpty
Methods inherited from interface org.apache.sshd.common.Service
getParentPropertyResolver
Methods inherited from interface org.apache.sshd.common.session.SessionHeartbeatController
disableSessionHeartbeat, getSessionHeartbeatInterval, getSessionHeartbeatType, setSessionHeartbeat, setSessionHeartbeat
Methods inherited from interface org.apache.sshd.common.session.SessionHolder
getSessionContext
-
Field Details
-
RESPONSE_BUFFER_GROWTH_FACTOR
Default growth factor function used to resize response buffers -
DEFAULT_SESSION_IGNORE_HEARTBEAT_STRING
Used inSSH_MSH_IGNORE
messages for the keep-alive mechanism- See Also:
-
channels
Map of channels keyed by the identifier -
nextChannelId
Next channel identifier - a UINT32 represented as a long -
heartbeatCount
-
-
Constructor Details
-
AbstractConnectionService
-
-
Method Details
-
getProperties
- Specified by:
getProperties
in interfacePropertyResolver
-
getPortForwardingEventListenerProxy
- Specified by:
getPortForwardingEventListenerProxy
in interfacePortForwardingEventListenerManager
- Returns:
- A proxy listener representing all the currently registered listener through this manager
-
addPortForwardingEventListener
Description copied from interface:PortForwardingEventListenerManager
Add a port forwarding listener- Specified by:
addPortForwardingEventListener
in interfacePortForwardingEventListenerManager
- Parameters:
listener
- ThePortForwardingEventListener
to add - nevernull
-
removePortForwardingEventListener
Description copied from interface:PortForwardingEventListenerManager
Remove a port forwarding listener- Specified by:
removePortForwardingEventListener
in interfacePortForwardingEventListenerManager
- Parameters:
listener
- ThePortForwardingEventListener
to remove - ignored ifnull
-
getUnknownChannelReferenceHandler
- Specified by:
getUnknownChannelReferenceHandler
in interfaceUnknownChannelReferenceHandlerManager
- Returns:
- The
UnknownChannelReferenceHandlerManager
to use - ifnull
then any reference to unknown channel causes anSshChannelNotFoundException
-
setUnknownChannelReferenceHandler
- Specified by:
setUnknownChannelReferenceHandler
in interfaceUnknownChannelReferenceHandlerManager
- Parameters:
handler
- TheUnknownChannelReferenceHandlerManager
to use - ifnull
then any reference to unknown channel causes anSshChannelNotFoundException
-
getRegisteredManagers
- Specified by:
getRegisteredManagers
in interfacePortForwardingEventListenerManagerHolder
- Returns:
- The currently registered managers. Note: it is highly recommended that implementors return either an un-modifiable collection or a copy of the current one. Callers, should avoid modifying the retrieved value.
-
addPortForwardingEventListenerManager
- Specified by:
addPortForwardingEventListenerManager
in interfacePortForwardingEventListenerManagerHolder
-
removePortForwardingEventListenerManager
- Specified by:
removePortForwardingEventListenerManager
in interfacePortForwardingEventListenerManagerHolder
-
getChannels
-
getSession
- Specified by:
getSession
in interfaceSessionHolder<Session>
-
start
public void start() -
startHeartBeat
-
sendHeartBeat
protected boolean sendHeartBeat()Sends a heartbeat message/packet- Returns:
true
if heartbeat successfully sent
-
futureDone
-
stopHeartBeat
protected void stopHeartBeat() -
getForwarder
Description copied from interface:ConnectionService
Retrieve the forwarder instance- Specified by:
getForwarder
in interfaceConnectionService
- Returns:
- The
Forwarder
-
preClose
protected void preClose()- Overrides:
preClose
in classAbstractCloseable
-
createForwardingFilter
-
getX11ForwardSupport
- Specified by:
getX11ForwardSupport
in interfaceConnectionService
-
createX11ForwardSupport
-
getAgentForwardSupport
- Specified by:
getAgentForwardSupport
in interfaceConnectionService
-
createAgentForwardSupport
-
getInnerCloseable
- Specified by:
getInnerCloseable
in classAbstractInnerCloseable
-
getNextChannelId
protected long getNextChannelId() -
registerChannel
Description copied from interface:ConnectionService
Register a newly created channel with a new unique identifier- Specified by:
registerChannel
in interfaceConnectionService
- Parameters:
channel
- TheChannel
to register- Returns:
- The assigned id of this channel - a UINT32 represented as a
long
- Throws:
IOException
- If failed to initialize and register the channel
-
unregisterChannel
Remove this channel from the list of managed channels- Specified by:
unregisterChannel
in interfaceConnectionService
- Parameters:
channel
- the channel
-
process
Description copied from interface:Service
Service the request. -
isAllowMoreSessions
public boolean isAllowMoreSessions()- Specified by:
isAllowMoreSessions
in interfaceConnectionService
-
setAllowMoreSessions
public void setAllowMoreSessions(boolean allow) - Specified by:
setAllowMoreSessions
in interfaceConnectionService
-
channelOpenConfirmation
- Throws:
IOException
-
channelOpenFailure
- Throws:
IOException
-
channelData
Process incoming data on a channel- Parameters:
buffer
- the buffer containing the data- Throws:
IOException
- if an error occurs
-
channelExtendedData
Process incoming extended data on a channel- Parameters:
buffer
- the buffer containing the data- Throws:
IOException
- if an error occurs
-
channelWindowAdjust
Process a window adjust packet on a channel- Parameters:
buffer
- the buffer containing the window adjustment parameters- Throws:
IOException
- if an error occurs
-
channelEof
Process end of file on a channel- Parameters:
buffer
- the buffer containing the packet- Throws:
IOException
- if an error occurs
-
channelClose
Close a channel due to a close packet received- Parameters:
buffer
- the buffer containing the packet- Throws:
IOException
- if an error occurs
-
channelRequest
Service a request on a channel- Parameters:
buffer
- the buffer containing the request- Throws:
IOException
- if an error occurs
-
channelFailure
Process a failure on a channel- Parameters:
buffer
- the buffer containing the packet- Throws:
IOException
- if an error occurs
-
channelSuccess
Process a success on a channel- Parameters:
buffer
- the buffer containing the packet- Throws:
IOException
- if an error occurs
-
getChannel
Retrieve the channel designated by the given packet- Parameters:
cmd
- The command being processed for the channelbuffer
- the incoming packet- Returns:
- the target channel
- Throws:
IOException
- if the channel does not exists
-
getChannel
- Throws:
IOException
-
resolveUnknownChannelReferenceHandler
Description copied from interface:UnknownChannelReferenceHandlerManager
Check if current manager has a specific handler set for it - if not, try and resolve one from the "parent" container (if any)- Specified by:
resolveUnknownChannelReferenceHandler
in interfaceUnknownChannelReferenceHandlerManager
- Returns:
- The resolved handler instance
-
channelOpen
- Throws:
Exception
-
sendChannelOpenFailure
protected IoWriteFuture sendChannelOpenFailure(Buffer buffer, long sender, int reasonCode, String message, String lang) throws IOException - Throws:
IOException
-
globalRequest
Process global requests- Parameters:
buffer
- The requestBuffer
- Returns:
- An
IoWriteFuture
representing the sent packet - Note: if no reply sent then an "empty" future is returned - i.e., any added listeners are triggered immediately with a synthetic "success" - Throws:
Exception
- If failed to process the request
-
handleUnknownRequest
protected IoWriteFuture handleUnknownRequest(Buffer buffer, String req, boolean wantReply) throws IOException - Throws:
IOException
-
sendGlobalResponse
protected IoWriteFuture sendGlobalResponse(Buffer buffer, String req, RequestHandler.Result result, boolean wantReply) throws IOException - Throws:
IOException
-
requestSuccess
- Throws:
Exception
-
requestFailure
- Throws:
Exception
-
toString
-