Package org.jcsp.net2.tcpip
Class TCPIPLink
- java.lang.Object
-
- org.jcsp.net2.Link
-
- org.jcsp.net2.tcpip.TCPIPLink
-
- All Implemented Interfaces:
CSProcess
public final class TCPIPLink extends Link
A concrete implementation of a Link that operates over a TCP/IP based socket connection. For information on Link, see the relative documentation.It is perfectly possible for a user to create a TCPIPLink without going through the standard LinkFactory approach, although this is not recommended. For example:
TCPIPLink link = new TCPIPLink(address);
link.connect(); link.registerLink();
new ProcessManager(link).start();
Can be achieved using the LinkFactory:
link = LinkFactory.getLink(address);
The LinkFactory will create and start the Link automatically if required.
- See Also:
Link
,TCPIPNodeAddress
-
-
Field Summary
Fields Modifier and Type Field Description static int
BUFFER_SIZE
Defines the size of the buffer to place on the incoming and outgoing streams.static boolean
NAGLE
Flag to determine whether the Nagle algorithm should be activated.private TCPIPNodeAddress
remoteAddress
The address of the remote Node.private java.net.Socket
sock
The socket connected to the remote Node.
-
Constructor Summary
Constructors Constructor Description TCPIPLink(java.net.Socket socket, NodeID nodeID)
Creates new TCPIPLink from a Socket.TCPIPLink(TCPIPNodeAddress address)
Creates a new TCPIPLink
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
connect()
Connects the Link to the remote Node.protected boolean
createResources()
Creates any required resources.protected void
destroyResources()
Destroys any resources used by the LinkNodeAddress
getRemoteAddress()
Gets the NodeAddress of the Node that this Link is connected to-
Methods inherited from class org.jcsp.net2.Link
getRemoteNodeID, getTxChannel, lostLink, registerLink, run
-
-
-
-
Field Detail
-
BUFFER_SIZE
public static int BUFFER_SIZE
Defines the size of the buffer to place on the incoming and outgoing streams. This is a rather large size, and for certain implementations, this may be reduced. It is unlikely that any sent object will be this large.
-
NAGLE
public static boolean NAGLE
Flag to determine whether the Nagle algorithm should be activated. Default is false (off).
-
sock
private java.net.Socket sock
The socket connected to the remote Node.
-
remoteAddress
private TCPIPNodeAddress remoteAddress
The address of the remote Node.
-
-
Constructor Detail
-
TCPIPLink
public TCPIPLink(TCPIPNodeAddress address) throws JCSPNetworkException
Creates a new TCPIPLink- Parameters:
address
- The address of the remote Node to connect to- Throws:
JCSPNetworkException
- Thrown if something goes wrong during the creation process
-
TCPIPLink
TCPIPLink(java.net.Socket socket, NodeID nodeID) throws JCSPNetworkException
Creates new TCPIPLink from a Socket. This is used internally by JCSP- Parameters:
socket
- The socket to create the TCPIPLink withnodeID
- The NodeID of the remote Node- Throws:
JCSPNetworkException
- Thrown if there is a problem during the connection
-
-
Method Detail
-
connect
public boolean connect() throws JCSPNetworkException
Connects the Link to the remote Node. Exchanges the NodeIDs- Specified by:
connect
in classLink
- Returns:
- True if the Link successfully connected to the remote Link
- Throws:
JCSPNetworkException
- Thrown if something goes wrong during the connection
-
createResources
protected boolean createResources() throws JCSPNetworkException
Creates any required resources. For TCP/IP there is none.- Specified by:
createResources
in classLink
- Returns:
- True if all resources were created OK. Always the case in TCP/IP
- Throws:
JCSPNetworkException
- Thrown if anything goes wrong during the creation process.
-
destroyResources
protected void destroyResources()
Destroys any resources used by the Link- Specified by:
destroyResources
in classLink
-
getRemoteAddress
public NodeAddress getRemoteAddress()
Gets the NodeAddress of the Node that this Link is connected to- Returns:
- The NodeAddress of the remotely connected Node
-
-