Package org.jcsp.net

Class ProtocolID

java.lang.Object
org.jcsp.net.ProtocolID
All Implemented Interfaces:
Serializable
Direct Known Subclasses:
TCPIPProtocolID

public abstract class ProtocolID extends Object implements Serializable

Abstract class that identifies a protocol. Provides methods for obtaining the protocol's Builder to be installed in the LinkFactory, starting a LinkServer for this protocol and for creating a NodeAddressID for this protocol from a String.

Protocols must not make use of the NodeID so that protocols can be installed before the node ID is determined. The current definition of TCPIPv4 protocol meets this criteria. Such a change will allow the UIFactory or other initialisation details to be obtained from a central server.

Author:
Quickstone Technologies Limited
See Also:
  • Constructor Details

    • ProtocolID

      public ProtocolID()
  • Method Details

    • equals

      public boolean equals(Object o)
      This tests whether another object is equal to this object. Two ProtocolID objects are equal if their classes are the same. This is a default implementation, it is probably more efficient to override this with an implementation that uses the instanceof operator.
      Overrides:
      equals in class Object
      Parameters:
      o - an object to compare with this object.
      Returns:
      true iff the supplied object's class is the same as the class of this object.
    • hashCode

      public final int hashCode()
      Returns a hash code for this object.
      Overrides:
      hashCode in class Object
      Returns:
      the hash code for the object.
    • isActive

      public abstract boolean isActive()

      Not currently used.

      This is envisaged to be used if a protocol that is in use and needs to be removed sometime in the future. This will stop any further use of the protocol.

      Returns:
      boolean indicating whether protocol is active.
    • requiresUserInteraction

      public abstract boolean requiresUserInteraction()

      Returns whether the protocol requires user interaction in order for data to be delivered. There could be a protocol that writes data out to floppy disk or CD-R (see Tanenbaum's example of bandwidth and lorry!).

      Returns:
      boolean indicating whether user interaction is required.
    • getPosition

      public final int getPosition()
      Gets the position of this protocol in the order of preference.
      Returns:
      the order of preference as an int.
    • getLinkBuilder

      protected abstract LinkFactory.Builder getLinkBuilder(Hashtable settings)
      Obtains the Builder for this protocol. Provides a Hashtable that can can contain settings needed to construct the Link.
      Parameters:
      settings - Hashtable containing settings.
      Returns:
      the Builder for constructing Links.
    • startLinkServer

      protected abstract LinkServer startLinkServer(NodeAddressID addressID) throws IllegalArgumentException

      Constructs, starts and returns a LinkServer on a specified NodeAddressID.

      Parameters:
      addressID - The address for the server to listen on.
      Returns:
      the constructed LinkServer
      Throws:
      IllegalArgumentException - if the supplied NodeAddressID is invalid.
    • createAddressID

      protected abstract NodeAddressID createAddressID(String stAddressID, boolean uniqueAddress) throws IllegalArgumentException
      Constructs a NodeAddressID from a String.
      Parameters:
      stAddressID - The address in String form.
      uniqueAddress - boolean indicating whether address is unique.
      Returns:
      the constructed NodeAddressID
      Throws:
      IllegalArgumentException - if the String supplied is invalid.