Class Service

  • Direct Known Subclasses:
    AsyncService, AuthenticationProtocolClient

    public abstract class Service
    extends java.lang.Object

    This class implements the transport protocol service.

    After the transport protocol negotiates the protocol version and performs server authentication via key exchange, the client requests a service. The service is identified by a name and currently there are 2 services defined.

    ssh-userauth
    ssh-connection

    These 2 services are implemented by the SSH authentication protocol and SSH connection protocol respectivley. Further services can be defined and a similar local naming policy is applied to the service names, as is applied to the algorithm names; a local service should use the "servicename(at)domain" syntax.

    Since:
    0.2.0
    Version:
    $Revision: 1.42 $
    Author:
    Lee David Painter
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static int ACCEPTING_SERVICE
      Serivce start mode passed into init method when the service is operating in server mode.
      protected SshMessageStore messageStore
      The message store registered with the transport protocol to receive the service's message.
      static int REQUESTING_SERVICE
      Service start mode passed into init method when the service is operating in client mode.
      protected java.lang.Integer startMode
      This instances start mode
      protected ServiceState state
      The current state of the service
      protected TransportProtocol transport
      The underlying transport protocol
    • Constructor Summary

      Constructors 
      Constructor Description
      Service​(java.lang.String serviceName)
      Constructs the service.
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      java.lang.String getServiceName()
      Returns the service name.
      ServiceState getState()
      Returns the state of the service.
      void init​(int startMode, TransportProtocol transport)
      Initialize the service.
      protected abstract void onServiceAccept()
      Called when the service is accepted by the remote server.
      protected abstract void onServiceInit​(int startMode)
      Called when the service is intialized.
      protected abstract void onServiceRequest()  
      protected abstract void onStart()
      Called when the service is started.
      protected void sendServiceAccept()
      Sends the SSH_MSG_SERVICE_ACCEPT message to the client to indicate that the local computer is accepting the remote computers service request.
      void start()
      Starts the service.
      void stop()
      Stops the service.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • REQUESTING_SERVICE

        public static final int REQUESTING_SERVICE
        Service start mode passed into init method when the service is operating in client mode. i.e its requesting a service to be started on the remote server and requires a SSH_MSG_SERVICE_ACCEPT message.
        See Also:
        Constant Field Values
      • ACCEPTING_SERVICE

        public static final int ACCEPTING_SERVICE
        Serivce start mode passed into init method when the service is operating in server mode. i.e a client is requesting a service to be started on the local computer and requires the SSH_MSG_SERVICE_ACCEPT message to be sent.
        See Also:
        Constant Field Values
      • messageStore

        protected SshMessageStore messageStore
        The message store registered with the transport protocol to receive the service's message.
      • startMode

        protected java.lang.Integer startMode
        This instances start mode
      • state

        protected ServiceState state
        The current state of the service
    • Constructor Detail

      • Service

        public Service​(java.lang.String serviceName)

        Constructs the service.

        Parameters:
        serviceName - the name of the service
        Since:
        0.2.0
    • Method Detail

      • getServiceName

        public final java.lang.String getServiceName()

        Returns the service name.

        Returns:
        the serivce name
        Since:
        0.2.0
      • start

        public final void start()
                         throws java.io.IOException

        Starts the service.

        Throws:
        java.io.IOException - if an IO error occurs
        Since:
        0.2.0
      • onStart

        protected abstract void onStart()
                                 throws java.io.IOException

        Called when the service is started.

        Throws:
        java.io.IOException - if an IO error occurs
        Since:
        0.2.0
      • getState

        public ServiceState getState()

        Returns the state of the service.

        Returns:
        the state of the service
        Since:
        0.2.0
        See Also:
        ServiceState
      • init

        public void init​(int startMode,
                         TransportProtocol transport)
                  throws java.io.IOException

        Initialize the service.

        Parameters:
        startMode - the mode of the service
        transport - the underlying transport protocol
        Throws:
        java.io.IOException - if an IO error occurs
        Since:
        0.2.0
      • stop

        public final void stop()

        Stops the service.

        Since:
        0.2.0
      • onServiceAccept

        protected abstract void onServiceAccept()
                                         throws java.io.IOException

        Called when the service is accepted by the remote server.

        Throws:
        java.io.IOException
        Since:
        0.2.0
      • onServiceInit

        protected abstract void onServiceInit​(int startMode)
                                       throws java.io.IOException

        Called when the service is intialized.

        Parameters:
        startMode - the mode of the service
        Throws:
        java.io.IOException - if an IO error occurs
        Since:
        0.2.0
      • onServiceRequest

        protected abstract void onServiceRequest()
                                          throws java.io.IOException
        Throws:
        java.io.IOException
      • sendServiceAccept

        protected void sendServiceAccept()
                                  throws java.io.IOException

        Sends the SSH_MSG_SERVICE_ACCEPT message to the client to indicate that the local computer is accepting the remote computers service request.

        Throws:
        java.io.IOException - if an IO error occurs
        Since:
        0.2.0