//   Course Number: COSC 650 Data Comm/Networks
//    Program Name: JavaChat
//  Project Number: 2
//         Authors: Brian Hoffman
//                  Mike McKinney
//                  Javier Carrasco
//     Description:  This class provides a simple client that can be used to 
//                   test the server. It privides the simple cpablity to input
//                   a single message at a time and observe the server's 
//                   response.

import java.net.*;
import java.io.*;

public class TCPMessageClient
{
    public static void printMessObj(ChatMessage mes)
    {
        System.out.println("Type: " + mes.getType());
        System.out.println("Sender: " + mes.getSender());
        System.out.println("ChatRoomID: " + mes.getRoomName());
        System.out.println("Message: " + mes.getMsg());
    }
    
    public TCPMessageClient()
    { }

    public static void main(String args[]) throws Exception
    {
        ChatMessage srvResponse;
                
        String type;
        String sender;
        String chatroomID;
        String message;
        ChatMessage mesObj;

        try 
        {
            InetAddress addr = InetAddress.getByName("127.0.0.1");
            int port = 6789;
            System.out.println("Creating Socket");            
            Socket socket = new Socket(addr, port);
                        
            if(socket.isConnected())
                System.out.println("Socket is CONNECTED");
            else
                System.out.println("Socket is DISCONNECTED");

            BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
                        
            ObjectOutputStream objOut = new ObjectOutputStream(socket.getOutputStream());
            objOut.flush();
            ObjectInputStream objIn = new ObjectInputStream(socket.getInputStream());
		
            while(true)
            {
                System.out.println("Enter message type.");
                type = input.readLine();
                System.out.println("Enter sender.");
                sender = input.readLine();
                System.out.println("Enter chatRoom ID.");
                chatroomID = input.readLine();
                System.out.println("Enter message.");
                message = input.readLine();
                
                mesObj = new ChatMessage(type, sender, chatroomID, message);
                objOut.writeObject(mesObj);
                objOut.flush();

                        
                srvResponse = (ChatMessage)objIn.readObject();
						
                System.out.println("Message back: " + srvResponse);
                TCPMessageClient.printMessObj(srvResponse);
                System.out.print("\n");
            }
        } catch (Exception e) {}
    }
}