Class Link
java.lang.Object
org.jcsp.net2.Link
- All Implemented Interfaces:
CSProcess
- Direct Known Subclasses:
TCPIPLink
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:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected booleanA flag used to indicate whether the Link is connected or not.static intLink priority in the system.protected intLink priority for this Link.protected NodeIDThe NodeID of the opposite end of the connection.protected DataInputStreamThe incoming stream for the connection.protected DataOutputStreamThe outgoing stream for the connection. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionabstract booleanconnect()Connects to the remote Node.protected abstract booleanCreates the resources (if any) required for the Node.protected abstract voidDestroys any used resources.final NodeIDReturns the NodeID of the connected Link.protected final ChannelOutputGets the channel that is connected to the Link Tx process.protected final voidlostLink()Marks the Link as lost within the LinkManager.final booleanRegisters the Link with the LinkManagerfinal voidrun()The run method for the process.
-
Field Details
-
connected
protected boolean connectedA 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
The incoming stream for the connection. This must be created by the specific protocol implementation. -
txStream
The outgoing stream for the connection. This must be created by the specific protocol implementation. -
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_PRIORITYLink priority in the system. This is a publicly accessible value that can be set by a user. -
priority
protected int priorityLink priority for this Link. This is exposed to child classes to allow specific Link priorities for different Link types.
-
-
Constructor Details
-
Link
public Link()
-
-
Method Details
-
getRemoteNodeID
Returns the NodeID of the connected Link.- Returns:
- NodeID of the connected Link.
-
getTxChannel
Gets the channel that is connected to the Link Tx process.- Returns:
- The ChannelOutput used to communicate with the Link Tx.
-
connect
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
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
-