Class Connection

  • All Implemented Interfaces:
    java.lang.Runnable

    public abstract class Connection
    extends java.lang.Thread
    Class that implements a connection with this telnet daemon.

    It is derived from java.lang.Thread, which reflects the architecture constraint of one thread per connection. This might seem a waste of resources, but as a matter of fact sharing threads would require a far more complex imlementation, due to the fact that telnet is not a stateless protocol (i.e. alive throughout a session of multiple requests and responses).

    Each Connection instance is created by the listeners ConnectionManager instance, making it part of a threadgroup and passing in an associated ConnectionData instance, that holds vital information about the connection. Be sure to take a look at their documention.

    Once the thread has started and is running, it will get a login shell instance from the ShellManager and run passing its own reference.

    Version:
    2.0 (16/07/2006)
    Author:
    Dieter Wimberger
    See Also:
    ConnectionManager, ConnectionData
    • Nested Class Summary

      • Nested classes/interfaces inherited from class java.lang.Thread

        java.lang.Thread.State, java.lang.Thread.UncaughtExceptionHandler
    • Field Summary

      • Fields inherited from class java.lang.Thread

        MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
    • Constructor Summary

      Constructors 
      Constructor Description
      Connection​(java.lang.ThreadGroup tcg, ConnectionData cd)
      Constructs a TelnetConnection by invoking its parent constructor and setting of various members.
      Subsequently instantiates the whole i/o subsystem, negotiating telnet protocol level options etc.
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      void addConnectionListener​(ConnectionListener cl)
      Method that registers a ConnectionListener with the Connection instance.
      void close()
      Closes the connection and its underlying i/o and network resources.
      protected abstract void doClose()  
      protected abstract void doRun()  
      ConnectionData getConnectionData()
      Method to access the associated connection data.
      boolean isActive()
      Returns if a connection has been closed.
      void processConnectionEvent​(ConnectionEvent ce)
      Method called by the io subsystem to pass on a "low-level" event.
      void removeConnectionListener​(ConnectionListener cl)
      Method that removes a ConnectionListener from the Connection instance.
      void run()
      Method overloaded to implement following behaviour: On first entry, retrieve an instance of the configured login shell from the ShellManager and run it.
      • Methods inherited from class java.lang.Thread

        activeCount, checkAccess, clone, countStackFrames, currentThread, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, onSpinWait, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, suspend, toString, yield
      • Methods inherited from class java.lang.Object

        equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • Connection

        public Connection​(java.lang.ThreadGroup tcg,
                          ConnectionData cd)
        Constructs a TelnetConnection by invoking its parent constructor and setting of various members.
        Subsequently instantiates the whole i/o subsystem, negotiating telnet protocol level options etc.
        Parameters:
        tcg - ThreadGroup that this instance is running in.
        cd - ConnectionData instance containing all vital information of this connection.
        See Also:
        ConnectionData
    • Method Detail

      • run

        public void run()
        Method overloaded to implement following behaviour:
        1. On first entry, retrieve an instance of the configured login shell from the ShellManager and run it.
        2. Handle a shell switch or close down disgracefully when problems (i.e. unhandled unchecked exceptions) occur in the running shell.
        Specified by:
        run in interface java.lang.Runnable
        Overrides:
        run in class java.lang.Thread
      • doRun

        protected abstract void doRun()
                               throws java.lang.Exception
        Throws:
        java.lang.Exception
      • doClose

        protected abstract void doClose()
                                 throws java.lang.Exception
        Throws:
        java.lang.Exception
      • getConnectionData

        public ConnectionData getConnectionData()
        Method to access the associated connection data.
        Returns:
        ConnectionData associated with the Connection instance.
        See Also:
        ConnectionData
      • close

        public void close()
        Closes the connection and its underlying i/o and network resources.
      • isActive

        public boolean isActive()
        Returns if a connection has been closed.
        Returns:
        the state of the connection.
      • addConnectionListener

        public void addConnectionListener​(ConnectionListener cl)
        Method that registers a ConnectionListener with the Connection instance.
        Parameters:
        cl - ConnectionListener to be registered.
        See Also:
        ConnectionListener
      • removeConnectionListener

        public void removeConnectionListener​(ConnectionListener cl)
        Method that removes a ConnectionListener from the Connection instance.
        Parameters:
        cl - ConnectionListener to be removed.
        See Also:
        ConnectionListener
      • processConnectionEvent

        public void processConnectionEvent​(ConnectionEvent ce)
        Method called by the io subsystem to pass on a "low-level" event. It will be properly delegated to all registered listeners.
        Parameters:
        ce - ConnectionEvent to be processed.
        See Also:
        ConnectionEvent