package org.reprap.comms; import java.io.IOException; import org.reprap.Device; import org.reprap.comms.OutgoingMessage; /** * */ public interface Communicator { /** * @param device * @param messageToSend * @return IncomingContext * @throws IOException */ public IncomingContext sendMessage(Device device, OutgoingMessage messageToSend) throws IOException; /** * @param message * @throws IOException */ public void receiveMessage(IncomingMessage message) throws IOException; /** * @param message * @param timeout * @throws IOException */ public void receiveMessage(IncomingMessage message, long timeout) throws IOException; /** * */ public void close(); /** * */ public void dispose(); /** * @return Address */ public Address getAddress(); // These methods will be removed when the asynchronous contexts are completed /** * */ public void lock(); /** * */ public void unlock(); }