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
Fields Modifier and Type Field Description protected Map<Long,Channel>channelsMap of channels keyed by the identifierstatic StringDEFAULT_SESSION_IGNORE_HEARTBEAT_STRINGUsed inSSH_MSH_IGNOREmessages for the keep-alive mechanismprotected AtomicLongheartbeatCountprotected AtomicLongnextChannelIdNext channel identifier - a UINT32 represented as a longstatic IntUnaryOperatorRESPONSE_BUFFER_GROWTH_FACTORDefault growth factor function used to resize response buffers-
Fields 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
Constructors Modifier Constructor Description protectedAbstractConnectionService(AbstractSession session)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddPortForwardingEventListener(PortForwardingEventListener listener)Add a port forwarding listenerbooleanaddPortForwardingEventListenerManager(PortForwardingEventListenerManager manager)voidchannelClose(Buffer buffer)Close a channel due to a close packet receivedvoidchannelData(Buffer buffer)Process incoming data on a channelvoidchannelEof(Buffer buffer)Process end of file on a channelvoidchannelExtendedData(Buffer buffer)Process incoming extended data on a channelvoidchannelFailure(Buffer buffer)Process a failure on a channelprotected voidchannelOpen(Buffer buffer)voidchannelOpenConfirmation(Buffer buffer)voidchannelOpenFailure(Buffer buffer)voidchannelRequest(Buffer buffer)Service a request on a channelvoidchannelSuccess(Buffer buffer)Process a success on a channelvoidchannelWindowAdjust(Buffer buffer)Process a window adjust packet on a channelprotected AgentForwardSupportcreateAgentForwardSupport(Session session)protected ForwardercreateForwardingFilter(Session session)protected X11ForwardSupportcreateX11ForwardSupport(Session session)protected voidfutureDone(IoWriteFuture future)AgentForwardSupportgetAgentForwardSupport()protected ChannelgetChannel(byte cmd, long recipient, Buffer buffer)protected ChannelgetChannel(byte cmd, Buffer buffer)Retrieve the channel designated by the given packetCollection<Channel>getChannels()ForwardergetForwarder()Retrieve the forwarder instanceprotected CloseablegetInnerCloseable()protected longgetNextChannelId()PortForwardingEventListenergetPortForwardingEventListenerProxy()Map<String,Object>getProperties()Collection<PortForwardingEventListenerManager>getRegisteredManagers()AbstractSessiongetSession()UnknownChannelReferenceHandlergetUnknownChannelReferenceHandler()X11ForwardSupportgetX11ForwardSupport()protected IoWriteFutureglobalRequest(Buffer buffer)Process global requestsprotected IoWriteFuturehandleUnknownRequest(Buffer buffer, String req, boolean wantReply)booleanisAllowMoreSessions()protected voidpreClose()voidprocess(int cmd, Buffer buffer)Service the request.longregisterChannel(Channel channel)Register a newly created channel with a new unique identifiervoidremovePortForwardingEventListener(PortForwardingEventListener listener)Remove a port forwarding listenerbooleanremovePortForwardingEventListenerManager(PortForwardingEventListenerManager manager)protected voidrequestFailure(Buffer buffer)protected voidrequestSuccess(Buffer buffer)UnknownChannelReferenceHandlerresolveUnknownChannelReferenceHandler()Check if current manager has a specific handler set for it - if not, try and resolve one from the "parent" container (if any)protected IoWriteFuturesendChannelOpenFailure(Buffer buffer, long sender, int reasonCode, String message, String lang)protected IoWriteFuturesendGlobalResponse(Buffer buffer, String req, RequestHandler.Result result, boolean wantReply)protected booleansendHeartBeat()Sends a heartbeat message/packetvoidsetAllowMoreSessions(boolean allow)voidsetUnknownChannelReferenceHandler(UnknownChannelReferenceHandler handler)voidstart()protected ScheduledFuture<?>startHeartBeat()protected voidstopHeartBeat()StringtoString()voidunregisterChannel(Channel channel)Remove this channel from the list of managed channels-
Methods 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 Detail
-
RESPONSE_BUFFER_GROWTH_FACTOR
public static final IntUnaryOperator RESPONSE_BUFFER_GROWTH_FACTOR
Default growth factor function used to resize response buffers
-
DEFAULT_SESSION_IGNORE_HEARTBEAT_STRING
public static final String DEFAULT_SESSION_IGNORE_HEARTBEAT_STRING
Used inSSH_MSH_IGNOREmessages for the keep-alive mechanism- See Also:
- Constant Field Values
-
nextChannelId
protected final AtomicLong nextChannelId
Next channel identifier - a UINT32 represented as a long
-
heartbeatCount
protected final AtomicLong heartbeatCount
-
-
Constructor Detail
-
AbstractConnectionService
protected AbstractConnectionService(AbstractSession session)
-
-
Method Detail
-
getProperties
public Map<String,Object> getProperties()
- Specified by:
getPropertiesin interfacePropertyResolver
-
getPortForwardingEventListenerProxy
public PortForwardingEventListener getPortForwardingEventListenerProxy()
- Specified by:
getPortForwardingEventListenerProxyin interfacePortForwardingEventListenerManager- Returns:
- A proxy listener representing all the currently registered listener through this manager
-
addPortForwardingEventListener
public void addPortForwardingEventListener(PortForwardingEventListener listener)
Description copied from interface:PortForwardingEventListenerManagerAdd a port forwarding listener- Specified by:
addPortForwardingEventListenerin interfacePortForwardingEventListenerManager- Parameters:
listener- ThePortForwardingEventListenerto add - nevernull
-
removePortForwardingEventListener
public void removePortForwardingEventListener(PortForwardingEventListener listener)
Description copied from interface:PortForwardingEventListenerManagerRemove a port forwarding listener- Specified by:
removePortForwardingEventListenerin interfacePortForwardingEventListenerManager- Parameters:
listener- ThePortForwardingEventListenerto remove - ignored ifnull
-
getUnknownChannelReferenceHandler
public UnknownChannelReferenceHandler getUnknownChannelReferenceHandler()
- Specified by:
getUnknownChannelReferenceHandlerin interfaceUnknownChannelReferenceHandlerManager- Returns:
- The
UnknownChannelReferenceHandlerManagerto use - ifnullthen any reference to unknown channel causes anSshChannelNotFoundException
-
setUnknownChannelReferenceHandler
public void setUnknownChannelReferenceHandler(UnknownChannelReferenceHandler handler)
- Specified by:
setUnknownChannelReferenceHandlerin interfaceUnknownChannelReferenceHandlerManager- Parameters:
handler- TheUnknownChannelReferenceHandlerManagerto use - ifnullthen any reference to unknown channel causes anSshChannelNotFoundException
-
getRegisteredManagers
public Collection<PortForwardingEventListenerManager> getRegisteredManagers()
- Specified by:
getRegisteredManagersin 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
public boolean addPortForwardingEventListenerManager(PortForwardingEventListenerManager manager)
- Specified by:
addPortForwardingEventListenerManagerin interfacePortForwardingEventListenerManagerHolder
-
removePortForwardingEventListenerManager
public boolean removePortForwardingEventListenerManager(PortForwardingEventListenerManager manager)
- Specified by:
removePortForwardingEventListenerManagerin interfacePortForwardingEventListenerManagerHolder
-
getChannels
public Collection<Channel> getChannels()
-
getSession
public AbstractSession getSession()
- Specified by:
getSessionin interfaceSessionHolder<Session>
-
startHeartBeat
protected ScheduledFuture<?> startHeartBeat()
-
sendHeartBeat
protected boolean sendHeartBeat()
Sends a heartbeat message/packet- Returns:
trueif heartbeat successfully sent
-
futureDone
protected void futureDone(IoWriteFuture future)
-
stopHeartBeat
protected void stopHeartBeat()
-
getForwarder
public Forwarder getForwarder()
Description copied from interface:ConnectionServiceRetrieve the forwarder instance- Specified by:
getForwarderin interfaceConnectionService- Returns:
- The
Forwarder
-
preClose
protected void preClose()
- Overrides:
preClosein classAbstractCloseable
-
getX11ForwardSupport
public X11ForwardSupport getX11ForwardSupport()
- Specified by:
getX11ForwardSupportin interfaceConnectionService
-
createX11ForwardSupport
protected X11ForwardSupport createX11ForwardSupport(Session session)
-
getAgentForwardSupport
public AgentForwardSupport getAgentForwardSupport()
- Specified by:
getAgentForwardSupportin interfaceConnectionService
-
createAgentForwardSupport
protected AgentForwardSupport createAgentForwardSupport(Session session)
-
getInnerCloseable
protected Closeable getInnerCloseable()
- Specified by:
getInnerCloseablein classAbstractInnerCloseable
-
getNextChannelId
protected long getNextChannelId()
-
registerChannel
public long registerChannel(Channel channel) throws IOException
Description copied from interface:ConnectionServiceRegister a newly created channel with a new unique identifier- Specified by:
registerChannelin interfaceConnectionService- Parameters:
channel- TheChannelto 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
public void unregisterChannel(Channel channel)
Remove this channel from the list of managed channels- Specified by:
unregisterChannelin interfaceConnectionService- Parameters:
channel- the channel
-
process
public void process(int cmd, Buffer buffer) throws ExceptionDescription copied from interface:ServiceService the request.
-
isAllowMoreSessions
public boolean isAllowMoreSessions()
- Specified by:
isAllowMoreSessionsin interfaceConnectionService
-
setAllowMoreSessions
public void setAllowMoreSessions(boolean allow)
- Specified by:
setAllowMoreSessionsin interfaceConnectionService
-
channelOpenConfirmation
public void channelOpenConfirmation(Buffer buffer) throws IOException
- Throws:
IOException
-
channelOpenFailure
public void channelOpenFailure(Buffer buffer) throws IOException
- Throws:
IOException
-
channelData
public void channelData(Buffer buffer) throws IOException
Process incoming data on a channel- Parameters:
buffer- the buffer containing the data- Throws:
IOException- if an error occurs
-
channelExtendedData
public void channelExtendedData(Buffer buffer) throws IOException
Process incoming extended data on a channel- Parameters:
buffer- the buffer containing the data- Throws:
IOException- if an error occurs
-
channelWindowAdjust
public void channelWindowAdjust(Buffer buffer) throws IOException
Process a window adjust packet on a channel- Parameters:
buffer- the buffer containing the window adjustment parameters- Throws:
IOException- if an error occurs
-
channelEof
public void channelEof(Buffer buffer) throws IOException
Process end of file on a channel- Parameters:
buffer- the buffer containing the packet- Throws:
IOException- if an error occurs
-
channelClose
public void channelClose(Buffer buffer) throws IOException
Close a channel due to a close packet received- Parameters:
buffer- the buffer containing the packet- Throws:
IOException- if an error occurs
-
channelRequest
public void channelRequest(Buffer buffer) throws IOException
Service a request on a channel- Parameters:
buffer- the buffer containing the request- Throws:
IOException- if an error occurs
-
channelFailure
public void channelFailure(Buffer buffer) throws IOException
Process a failure on a channel- Parameters:
buffer- the buffer containing the packet- Throws:
IOException- if an error occurs
-
channelSuccess
public void channelSuccess(Buffer buffer) throws IOException
Process a success on a channel- Parameters:
buffer- the buffer containing the packet- Throws:
IOException- if an error occurs
-
getChannel
protected Channel getChannel(byte cmd, Buffer buffer) throws IOException
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
protected Channel getChannel(byte cmd, long recipient, Buffer buffer) throws IOException
- Throws:
IOException
-
resolveUnknownChannelReferenceHandler
public UnknownChannelReferenceHandler resolveUnknownChannelReferenceHandler()
Description copied from interface:UnknownChannelReferenceHandlerManagerCheck if current manager has a specific handler set for it - if not, try and resolve one from the "parent" container (if any)- Specified by:
resolveUnknownChannelReferenceHandlerin interfaceUnknownChannelReferenceHandlerManager- Returns:
- The resolved handler instance
-
sendChannelOpenFailure
protected IoWriteFuture sendChannelOpenFailure(Buffer buffer, long sender, int reasonCode, String message, String lang) throws IOException
- Throws:
IOException
-
globalRequest
protected IoWriteFuture globalRequest(Buffer buffer) throws Exception
Process global requests- Parameters:
buffer- The requestBuffer- Returns:
- An
IoWriteFuturerepresenting 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
-
-