package no.ntnu.fp.net.co; import java.net.InetAddress; /** * Interface that defines the methods a Connection implementation must support. * * @author Thomas Østerlie * @version 0.1 */ public interface Connection { /** * Connects to a remote instance. * * @param remoteAddress * address of remote instance * @param remotePort * port remote instance is listening to * @throws java.io.IOException * if an I/O error occurs during the connection * @throws java.net.SocketTimeoutException * if timeout expires before connection is completed. */ public void connect(InetAddress remoteAddress, int remotePort) throws java.io.IOException, java.net.SocketTimeoutException; /** * Listens for a connection to be made to this Connection and accepts it. * * @throws java.io.IOException * if an I/O error occurs when waiting for a connection * @throws java.net.SocketTimeoutException * if the timeout has been reached */ public Connection accept() throws java.io.IOException, java.net.SocketTimeoutException; /** * Send a message to a remote instance. * * @param msg * the message to be sent * @throws java.net.ConnectException * if no remote instance is connected * @throws java.io.IOException * if an I/O error occurs when sending */ public void send(String msg) throws java.net.ConnectException, java.io.IOException; /** * Synchronous receive of message from remote instance. Blocks until a * message is received. * * @return the received message * @throws java.net.ConnectException * if no remote instance is connected * @throws java.io.IOException * if an I/O error occurs when sending */ public String receive() throws java.net.ConnectException, java.io.IOException; /** * Closes this connection * * @throws java.io.IOException * if an I/O error occurs when closing this connection */ public void close() throws java.io.IOException; }