package net;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.InetAddress;
import java.net.Socket;
/**
 * \class TCPClient
 * Handles connection to the server.
 */
public class TCPClient implements MessageConnection {
	private Socket socket;
	private InetAddress adr;
	private int port;

	/**
	 * set the server
	 * \param adr ip address
	 * \param port port number
	 */
	public void setServer(InetAddress adr, int port) {
		this.adr = adr;
		this.port = port;
	}
	
	/**
	 * connect to the server
	 */
	public void connect() throws IOException {
		socket = new Socket(adr, port);
	}
	
	/**
	 * disconnect from server
	 */
	public void disconnect() throws IOException {
		socket.close();
	}

	@Override
	public Message getMessage() throws IOException, ClassNotFoundException {
		ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
		return (Message) in.readObject();
	}

	@Override
	public void sendMessage(Message m) throws IOException {
		ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());
		out.writeObject(m);
	}

	public InetAddress getAdr() {
		return adr;
	}

	public int getPort() {
		return port;
	}
}
