package fr.uge.net.ex1;

import java.io.IOException;
import java.net.BindException;
import java.net.InetSocketAddress;
import java.nio.channels.DatagramChannel;
import java.util.logging.Logger;

public class ServerChrono {
	private static final Logger logger = Logger.getLogger(ServerChrono.class.getName());

	private final DatagramChannel dc;

    public ServerChrono(int port) throws IOException {
        dc = DatagramChannel.open();
        dc.bind(new InetSocketAddress(port));
        logger.info("ServerChrono started on port " + port);
    }

    public void serve() {
        // TODO
    }
    
    public static void usage() {
        System.out.println("Usage : ServerChrono <listening_port>");
    }

    public static void main(String[] args) throws IOException {
        if (args.length != 1) {
            usage();
            return;
        }
        var port = Integer.valueOf(args[0]);
        if (port < 1024 || port > 65535) {
            System.out.println("The port number must be between 1024 and 65535");
            return;
        }
        try {
        	var server = new ServerChrono(port);
            server.serve();
        } catch (BindException e) {
            System.out.println("Server could not bind on " + port + "\nAnother server is probably running on this port.");
            return;
        }
    }
}
