<html>
<xmp>
/**
 * 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 java.io.*;
import java.net.*;
import java.util.*;




/* ====================================================================== */
/** This class is used by the controller to send messages to agents with
 *  a port number.  It simply opens a socket to the receiver's port and
 *  sends the message object.
 *
 */
public class SocketSender extends Thread {

	/** The message to send. */
	private Message message;

	/** The host that the server (ipaq) is on. */
	private String host = "localhost";



    /* ===================================================================== */
    /** This constructor initializes the SocketSender so that it can send a
     *  message.
     *
     *  @param  message   The message to send.
     *
     */
	public SocketSender(Message message){

		this.message = message;

	} //Constructor



    /* ===================================================================== */
    /** This constructor initializes the SocketSender so that it can send a
     *  message.
     *
     *  @param  message   The message to send.
     *  @param  host   The host that the server (ipaq) is on.
     *
     */
	public SocketSender(Message message, String host){

		this.message = message;
		this.host = host;

	} //Constructor



    /* ===================================================================== */
    /** This method opens a Socket and trys to send the message stored in this
     *  class.  It will only try to send the Message once.
     *
     */
	public void run(){

		try{
			// Get a Socket
			Socket s = new Socket( host, message.getTo() );

			// Get the output stream
			System.out.println ("Simulator:  sending message on port "+message.getTo() );
			BufferedOutputStream bufout = new BufferedOutputStream(s.getOutputStream());
			ObjectOutputStream 	objout = new ObjectOutputStream(bufout);

			// Send the object and close
			objout.writeObject(message);
			objout.flush();
			objout.close();

			s.close();


		}catch(Exception e){System.out.println("Not connected to the user.");}

	} //method: run


} //class: SocketSender
</xmp>
</html>
