package client;

import java.io.IOException;

import protocol.Message;
import protocol.TCPClientMessage;
import protocol.Header.MsgType;
import chat.*;

public class ClientGestChatRoom extends TCPClientMessage implements ChatRoom,Runnable {

	private Chatter leChatter;
	private String topic;
	
	public void run () {
		System.out.println("new listening thread for new posts started in ClientGestCR");
		while (leChatter != null) {
			Message req;
			try {
				req = getMessage();
			
				switch (req.head.type) {
					case RECV_POST :
						leChatter.recevoirMessage(req.data.get(0),new TextChatter(req.data.get(1)));
				}
		
			} catch (Exception e) {
				System.err.println("Client connection lost !! Error :"+e);
				System.err.println("Exiting properly ");			
			}
		}
	}
	
	public ClientGestChatRoom(String topic) {
		this.topic = topic;
	}
	
	
	public void rejoindre(Chatter bob) {
		try {
			sendMessage(new Message(MsgType.JOIN_TOPIC,bob.getPseudo()));
			leChatter = bob;
			new Thread(this).start();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public void quitter(Chatter bob) {
		try {
			sendMessage(new Message(MsgType.QUIT_TOPIC,bob.getPseudo()));
			leChatter = null;
			Thread.currentThread().interrupt();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public String getTopic() {
		return topic;
	}

	public void poster(String message, Chatter auteur) {
		try {
			sendMessage(new Message(MsgType.POST_MSG,message,auteur.getPseudo()));
		} catch (IOException e) {
			e.printStackTrace();
		}
	}


}
