/* IMPORTS */
import java.io.*;

public class Message implements Serializable
{
    /* CONSTANTS */
    // NONE

    /* MEMBER VARIABLES */
    private int serverSrcID = 0;  // Message's source ID for server
    private int serverDestID = 0; // Message's destination ID for server
    private int roomID = 0;       // Message's room ID
    private String message = "";  // Message's text message
    float version = 1.0f;         // Message's version number

    public Message()
    {
        /* USE DEFAULT VALUES */
         
    } // constructor
    
    public Message(int dest_ID, int src_ID, int room_ID, String msg)
    {
        /* USE SPECIFIED VALUES */
        serverDestID = dest_ID;
        serverSrcID = src_ID;
        roomID = room_ID;
        message = msg;
    } // constructor
    
    public String getMessage()
    {
        return message;
    } // method getMessage
    
    public void setMessage(String msg)
    {
        message = msg;
    } // method setMessage
    
    public int getServerSrcID()
    {
        return serverSrcID;
    } // method getServerSrcID
    
    public void setServerSrcID(int src_id)
    {
        serverSrcID = src_id;
    } // method setServerSrcID
    
    public int getServerDestID()
    {
        return serverDestID;
    } // method getServerDestID
    
    public void setServerDestID(int dest_id)
    {
        serverDestID = dest_id;
    } // method setServerDestID
    
    public int getRoomID()
    {
        return roomID;
    } // method getRoomID
    
    public void setRoomID(int room_id)
    {
        roomID = room_id;
    } // method setRoomID
        
    private void writeObject(ObjectOutputStream stream) throws IOException
    {
        stream.writeFloat(version);
        stream.writeInt(serverDestID);
        stream.writeInt(serverSrcID);
        stream.writeInt(roomID);
        stream.writeObject(message);
    } // method writeObject
    
    private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException
    {
        version      = (float) stream.readFloat();
        serverDestID = (int) stream.readInt();
        serverSrcID  = (int) stream.readInt();
        roomID       = (int) stream.readInt();
        message      = (String) stream.readObject();
    } // method  readObject
    
    public String toString()
    {
        return "ServerDest: '"+serverDestID+"' ServerSrc: '"+serverSrcID+
               "Room: '"+roomID+"' Message: '"+message+"'";
    } // method toString
} // class Message
