package no.ntnu.fp.net.co; import java.io.IOException; import no.ntnu.fp.net.admin.Log; import no.ntnu.fp.net.cl.ClSocket; import no.ntnu.fp.net.cl.KtnDatagram; /** * Helper class for timed receiving. This thread runs until a packet is * received, or receive is cancelled using stopReceive(). */ class ClSocketReceiver extends Thread { /** Hold a packet. */ private KtnDatagram packet = null; /** Connection to listen on. */ private ClSocket connection; /** Port to listen on. */ private int port = -1; /** * Construct a receiver for a given port. * * @param port * Port to listen for packets on. */ public ClSocketReceiver(int port) { this.port = port; } /** Try to receive a packet. */ public void run() { try { connection = new ClSocket(); packet = connection.receive(port); connection = null; } catch (Exception e) { Log.writeToLog("Exception while receiving: " + e.getMessage(), "ClSocketReceiver"); e.printStackTrace(); } } /** Get a packet, if one was received. */ public KtnDatagram getPacket() { return packet; } /** Stop listening for packet. */ public void stopReceive() { try { if (connection != null) connection.cancelReceive(); } catch (IOException e) { // Ignore. } } }