org.jcsp.net2
Class Link

java.lang.Object
  extended by org.jcsp.net2.Link
All Implemented Interfaces:
CSProcess
Direct Known Subclasses:
TCPIPLink

public abstract class Link
extends Object
implements CSProcess

Abstract class representing a Link. This class defines the two processes (Link TX, Link RX) where the network protocol is of key importance. Specific technology protocols (e.g. TCP/IP) must extend this class, providing the necessary streams for operation, and also overriding the methods connect, createResources and destroyResources, which will have specific implementations dependent on the underlying technology. Everything else should operate as defined in this class.

Author:
Kevin Chalmers
See Also:
NetworkProtocol

Field Summary
protected  boolean connected
          A flag used to indicate whether the Link is connected or not.
static int LINK_PRIORITY
          Link priority in the system.
protected  int priority
          Link priority for this Link.
protected  NodeID remoteID
          The NodeID of the opposite end of the connection.
protected  DataInputStream rxStream
          The incoming stream for the connection.
protected  DataOutputStream txStream
          The outgoing stream for the connection.
 
Constructor Summary
Link()
           
 
Method Summary
abstract  boolean connect()
          Connects to the remote Node.
protected abstract  boolean createResources()
          Creates the resources (if any) required for the Node.
protected abstract  void destroyResources()
          Destroys any used resources.
 NodeID getRemoteNodeID()
          Returns the NodeID of the connected Link.
protected  ChannelOutput getTxChannel()
          Gets the channel that is connected to the Link Tx process.
protected  void lostLink()
          Marks the Link as lost within the LinkManager.
 boolean registerLink()
          Registers the Link with the LinkManager
 void run()
          The run method for the process.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

connected

protected boolean connected
A flag used to indicate whether the Link is connected or not. This flag is set normally during the connect operation, but may be done within the constructor. If not set during the constructor, and if connect is not called to set the flag to true, then when the process is run connect will be called.


rxStream

protected DataInputStream rxStream
The incoming stream for the connection. This must be created by the specific protocol implementation.


txStream

protected DataOutputStream txStream
The outgoing stream for the connection. This must be created by the specific protocol implementation.


remoteID

protected NodeID remoteID
The NodeID of the opposite end of the connection. This should be set either during construction, or during the connect method of a child class.


LINK_PRIORITY

public static int LINK_PRIORITY
Link priority in the system. This is a publicly accessible value that can be set by a user.


priority

protected int priority
Link priority for this Link. This is exposed to child classes to allow specific Link priorities for different Link types.

Constructor Detail

Link

public Link()
Method Detail

getRemoteNodeID

public final NodeID getRemoteNodeID()
Returns the NodeID of the connected Link.

Returns:
NodeID of the connected Link.

getTxChannel

protected final ChannelOutput getTxChannel()
Gets the channel that is connected to the Link Tx process.

Returns:
The ChannelOutput used to communicate with the Link Tx.

connect

public abstract boolean connect()
                         throws JCSPNetworkException
Connects to the remote Node. This must be overridden by a child class implementation.

Returns:
True if the connection succeeds, false otherwise.
Throws:
JCSPNetworkException - Thrown if the connection fails.

createResources

protected abstract boolean createResources()
                                    throws JCSPNetworkException
Creates the resources (if any) required for the Node. These could be set up during construction, but if not, this method is called immediately after connect within the run method. Child implementations should override this method.

Returns:
True if resources were created OK, false otherwise.
Throws:
JCSPNetworkException - Thrown if a problem occurs creating the resources.

destroyResources

protected abstract void destroyResources()
Destroys any used resources. This is called whenever a Node fails. Particular implementations must overwrite this method.


registerLink

public final boolean registerLink()
Registers the Link with the LinkManager

Returns:
True if Link was registered, false otherwise.

lostLink

protected final void lostLink()
Marks the Link as lost within the LinkManager.


run

public final void run()
The run method for the process. This will connect the Link (if necessary) and then start the Tx and Rx Loops.

Specified by:
run in interface CSProcess


Copyright © 1996-2012. All Rights Reserved.