/*
 *  Kolage
 */

package easycomm;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class Server {

    DateFormat dfm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    static LinkedList<User> users = new LinkedList<User>();
    static List<Message> messages = new ArrayList<Message>();

    static int clientCounter = 0;

    public static void main(String[] args) throws IOException {

        int port = -1; int clientNum = -1;

        for(int i = 0; i < args.length ; i++) {
            if(args[i].equals("-p")) {
                try {
                    port = Integer.parseInt(args[i+1]);
                }
                catch(NumberFormatException e) {
                    System.out.println("Argument neni cislo. " + e.getMessage());
                }
            } else
                if(args[i].equals("-c")) {                
                    try {
                        clientNum = Integer.parseInt(args[i+1]);
                    }
                    catch(NumberFormatException e) {
                        System.out.println("Argument neni cislo. " + e.getMessage());
                    }
                }
        }

        if((clientNum == -1) || (port == -1)) {
            System.out.println("Malo zadanych parametru.");
            System.exit(1);
        }

        /*
        port = 10000;
        clientNum = 5;
         * 
         */

        ServerSocket server = new ServerSocket(port);

        System.out.println("Cekam na klienty ...");

        while(true) {
            Socket client = server.accept();
            if(clientCounter < clientNum) {
                clientCounter++;
                ProcessHandler ph = new ProcessHandler(client);
                ph.start();
                ClientHandler ch = new ClientHandler(client);
                ch.start();
            } else
                System.out.println("Server plny !");
        }

    }
}
