package no.ntnu.fp.net; 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 */ 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 void 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; }