package server;

import java.net.Socket;
import java.util.Vector;

import net.Message;
import net.TCPServer;
import net.Message.Header;

public class ServerTopicsManager extends TCPServer {
	private TCPTopicsManager tcpTopicsManager = new TCPTopicsManager();
	
	@Override
	public void manageClient(Socket comm) {
		try {
			Message inputMessage;
			while ((inputMessage = getMessage()) != null) {
			//System.out.println("Got Message2" + inputMessage.head);
			
			switch (inputMessage.head) {
				case LIST_TOPIC :
					//System.out.println("Got Message");
					Vector<String> topics = tcpTopicsManager.listTopics();
					Message outputMessage1 = new Message(Header.LIST_TOPIC, topics);
					sendMessage(outputMessage1);
					break;
				case CREATE_TOPIC :
					//System.out.println("Got Message 3");
					tcpTopicsManager.createTopic(inputMessage.getData().get(0));
					break;
				case JOIN_TOPIC : 
					String topicToJoin = inputMessage.getData().get(0);
					Message outputMessage3 = new Message(Header.JOIN_TOPIC, String.valueOf(tcpTopicsManager.getTopicPort(topicToJoin)));
					sendMessage(outputMessage3);
					break;
				default : 
					break;
			}
			}
		} catch (Exception e) {
			System.out.println(e);
			e.printStackTrace();
		}
	}
}
