/**
* Title: GPS Simulator
* Copyright: Copyright (c) 2002
* Company: University of Oregon Computer Science Dept.
*
* @author Jason Prideaux
* @version 1.0
*
*/
package transport;
import transport.protocol.*;
import controller.*;
import java.io.*;
import java.net.*;
import java.util.*;
/* ====================================================================== */
/** This class is used by the controller to receive Messages sent by ipaq
* clients. This class mearly passes the messages up to the Controller,
* it to deal with.
*
*/
public class SocketReceiver extends Thread {
/** The port to listen on. */
private int port;
/** The SocketReceiverListener object to pass messages to. */
private SocketReceiverListener controller;
/* ===================================================================== */
/** This constructor initializes the Receiver, so that it is ready to begin
* listening for messages.
*
* @param controller The listener to notify.
* @param port The port this receiver is listening on.
*
*/
public SocketReceiver(SocketReceiverListener controller, int port){
this.port = port;
this.controller = controller;
} //Constructor
/* ===================================================================== */
/** This method opens a Socket and listens to it forever. When it gets
* an incoming message it will pass it up to the Listener, and then
* continue to listen.
*
*/
public void run(){
try{
// Get socket to listen to.
ServerSocket listen = new ServerSocket(port);
while(true){
try{
// Get the Socket for client connecting to us.
Socket s;
s = listen.accept();
// Get the incoming message.
BufferedInputStream bufin = new BufferedInputStream(s.getInputStream());
ObjectInputStream objin = new ObjectInputStream(bufin);
Message msg = (Message)objin.readObject();
// Give message to our listener.
controller.incomingMessage(msg);
}catch(Exception ee){System.out.println(ee);}
} //while
}catch(Exception e){System.out.println(e);}
} //method: run
} //class: SocketReceiver