Class SocketSendingTracker


  • public class SocketSendingTracker
    extends Object
    A SocketSendingTracker keeps track of all the sockets that are currently sending data and checks the health of the sockets to detect hanged connections. If a sending operation takes too much time (i.e. exceeds a time limit) then it is assumed that the connection has been lost and for some reason the JVM has not been notified of the dead connection. Once a dead connection has been detected it will be closed so that the thread that was writing to the socket can resume. Resuming locked threads is important since otherwise a complete system halt may occur.

    The time limit to wait before considering a connection dead can be configured changing the property xmpp.session.sending-limit. If the property was not defined then a default time limit of 60 seconds will be assumed. This means that by default if a sending operation takes longer than 60 seconds then the connection will be closed and the client disconnected. Therefore, it is important to not set a very low time limit since active clients may be incorrectly considered as dead clients.

    Author:
    Gaston Dombiak
    • Method Detail

      • getInstance

        public static SocketSendingTracker getInstance()
        Returns the unique instance of this class.
        Returns:
        the unique instance of this class.
      • start

        public void start()
        Start up the daemon thread that will check for the health of the sockets that are currently sending data.
      • shutdown

        public void shutdown()
        Indicates that the checking thread should be stoped. The thread will be waked up so that it can be stoped.