/* * OnLineDatagramReceiver.java * * Created on den 6 september 2001, 14:28 */ package ip1.u4.onLine; import java.util.StringTokenizer; import java.net.DatagramPacket; /** skapar OnLineDatagramReceiver. Implementerar * DatagramReceiver */ public class OnLineDatagramReceiver implements ip1.u4.net.DatagramReceiver { /** referens till OnLine */ private OnLine onLine = null; /** skapar OnLineDatagramReceiver implementerar * DatagramReceiver. OnLineDatagramReceiver prosessar * meddelanden genom att dela upp dem och skapa ett Userobjekt vars * referens sedan skickas till {@link OnLine#addUser(User) OnLine.addUser(User)}. * Arbetet sker i en nyskapad tråd. * @param onLine Controllerklassen som tar emot de färdigprosessade meddelandena i * form av Userobjekt. */ public OnLineDatagramReceiver(OnLine onLine) { this.onLine = onLine; } /** implementeras för att processa meddelande på ett sätt som passar aktuell applikation. * * @param message meddelande att processa */ public void processMessage(DatagramPacket message) { new OnLineRunnableDatagramReceiver(message); } /** Inre klass som utför det verkliga arbetet åt metoden processMessage i en egen tråd */ private class OnLineRunnableDatagramReceiver implements Runnable { /** referens till meddelandet i den inre klassen OnLineRunnableDatagramReceiver */ private DatagramPacket message; /** Inre klassens konstruktor, anropas av processMessage * @param message meddelandet som skall processas. */ OnLineRunnableDatagramReceiver(DatagramPacket message) { this.message = message; (new Thread(this)).start(); } /** implementerar Runnable i den inre klassen OnLineRunnableDatagramReceiver */ public void run() { String name = ""; String host = ""; String comment = ""; String msg = new String(message.getData(), 0, message.getLength()); StringTokenizer st = new StringTokenizer(msg, " "); String s; while(! st.nextToken().equals("From:")); while(! (s = st.nextToken()).equals("Host:")) { name = name + s + " "; } while(! (s = st.nextToken()).equals("Comment:")) { host = host + s + " "; } while (st.hasMoreTokens()) { comment = comment + st.nextToken() + " "; } onLine.addUser(new User(name, host, comment)); } } }