import org.acplt.oncrpc.*;
import java.io.IOException;
import java.net.InetAddress;
import java.util.Random;
import java.util.Scanner;

public class ChatClientMain extends ChatClientServerStub {
    private static String adresseIP;
    private static int portEcoute;

    public ChatClientMain(int port) throws OncRpcException, IOException {
        super(port);
    }

    // Service de réception des messages du serveur principal
    @Override
    public void RECEPTION_1(String message) {
        System.out.println("\n[Message] " + message);
    }

    public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(System.in);

        System.out.print("Entrez votre adresse IP (ou localhost si test local) : ");
        adresseIP = sc.nextLine().trim();

        // Choix d'un port d'écoute unique pour ce client
        portEcoute = 4000 + new Random().nextInt(1000);

        // Connexion au serveur principal avec adresse:port
        InetAddress addrServeur = InetAddress.getByName("localhost");
        ChatServerClient server = new ChatServerClient(addrServeur, OncRpcProtocols.ONCRPC_TCP);
        String adressePort = adresseIP + ":" + portEcoute;
        server.CONNEXION_1(adressePort);

        // Lancement du serveur secondaire (pour recevoir les messages) dans un thread
        new Thread(() -> {
            try {
                new ChatClientMain(portEcoute).run();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }).start();

        // Boucle d'envoi des messages
        System.out.print("Votre pseudo : ");
        String pseudo = sc.nextLine();

        while (true) {
            String msg = sc.nextLine();
            server.ENVOI_1(pseudo + " : " + msg);
        }
    }
}
