//
// Télé discussion sur Internet - Classe ConnexionTD
//
// <http://cui.unige.ch/java/exemples>
//



import java.io.*;
import java.net.*;
import java.util.*;

class ConnexionTD extends Thread {
  protected Socket client;
  protected ServeurTD serveur;
  protected BufferedReader in;
  protected PrintStream out;
  protected Nettoyeur nettoyeur;

  public ConnexionTD(Socket client_soc, Nettoyeur n, ServeurTD s)
  {
    client=client_soc;
    nettoyeur=n;
    serveur=s;

    try  {
      in =new BufferedReader(new InputStreamReader(client.getInputStream()));
      out =new PrintStream(client.getOutputStream());
    } catch (IOException e)  {
      try {
        client.close();
      } catch (IOException e1) {
      };
      System.err.println( "ConnexionTD> " + e.getMessage());
      return;
    }
    this.start();
  } // ConnexionTD

  public void run()
  {
    String ligne;
    ConnexionTD c;

    try {
      while(true) {
        ligne=in.readLine();
        // envoyer a tous les clients la ligne
        System.out.println(ligne);
       
        synchronized(serveur.connexions)  {
       	  for (int i=0; i < serveur.connexions.size(); i++) {
       	    c = (ConnexionTD) serveur.connexions.elementAt(i);
            c.out.println(ligne);
          }
        }
       
        if (ligne.endsWith("FIN")) break;
      }
    }  catch (IOException e) { 
    }  finally {
      try {
        client.close();
      } catch (IOException e){
      };
      System.out.println("ConnexionTD> Fin de connexion...") ;

      synchronized(nettoyeur) {
        nettoyeur.notify();
      }
    }
  } // run

} // class ConnexionTD
