Compare commits
No commits in common. "5d762d1632d69ed9fa50161318eb40525985212f" and "2f4587362119a4746a8c84dfc9dfe06e0c79c8e9" have entirely different histories.
5d762d1632
...
2f45873621
5 changed files with 28 additions and 165 deletions
|
@ -1,26 +0,0 @@
|
||||||
package liste;
|
|
||||||
|
|
||||||
|
|
||||||
import nom.*;
|
|
||||||
|
|
||||||
public class ClientB {
|
|
||||||
GestionnaireListeUtilisateur gestionnaireListeUtilisateur = GestionnaireListeUtilisateur.instance(); //usefull ? puisque static ?
|
|
||||||
GestionnaireNom gestionnaireNom = GestionnaireNom.instance();
|
|
||||||
|
|
||||||
void test(String msg) {
|
|
||||||
//gestionnaireListeUtilisateur.ecoute(); //pas en local sinon plusieurs server sur le même port ....
|
|
||||||
gestionnaireListeUtilisateur.majListe();
|
|
||||||
gestionnaireListeUtilisateur.envoie(msg);
|
|
||||||
|
|
||||||
int a=0;
|
|
||||||
for(int i=0;i<100000;i++) {
|
|
||||||
a+=1;
|
|
||||||
}
|
|
||||||
|
|
||||||
for(int i=0; i<GestionnaireListeUtilisateur.getListeUtilisateur().size(); i++) {
|
|
||||||
System.out.println("ici : " + GestionnaireListeUtilisateur.getListeUtilisateur().get(i).nom);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -2,12 +2,10 @@ package liste;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import nom.GestionnaireNom;
|
|
||||||
|
|
||||||
public class GestionnaireListeUtilisateur {
|
public class GestionnaireListeUtilisateur {
|
||||||
|
|
||||||
//contient la liste Utilisateur à jour
|
//contient la liste Utilisateur à jour
|
||||||
private static ArrayList<TypeListeUtilisateur> listeUtilisateur = new ArrayList<TypeListeUtilisateur>();
|
public static ArrayList<TypeListeUtilisateur> listeUtilisateur = new ArrayList<TypeListeUtilisateur>();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -27,28 +25,10 @@ public class GestionnaireListeUtilisateur {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//récupérer la liste lors de la conenxion //TODO
|
||||||
public static ArrayList<TypeListeUtilisateur> getListeUtilisateur() {
|
public void recuperationListeInitiale() {
|
||||||
return listeUtilisateur;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static void setListeUtilisateur(ArrayList<TypeListeUtilisateur> liste) {
|
|
||||||
listeUtilisateur = liste;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//récupérer la liste des autres //TODO
|
|
||||||
public void majListe() {
|
|
||||||
UdpBroadcastClient client = new UdpBroadcastClient(ConstanteListeUtilisateur.NUM_PORT_SERVER,
|
|
||||||
"listRequest"+ "$$$" + " " + "$$$" + " " + "$$$" + " ");
|
|
||||||
Thread t = new Thread(client);
|
|
||||||
t.start();
|
|
||||||
|
|
||||||
|
//ici ?
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
package liste;
|
|
||||||
|
|
||||||
//import java.util.concurrent.ExecutorService;
|
|
||||||
//import java.util.concurrent.Executors;
|
|
||||||
|
|
||||||
public class MainB {
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
int portServer = ConstanteListeUtilisateur.NUM_PORT_SERVER;
|
|
||||||
|
|
||||||
UdpBroadcastServer server = new UdpBroadcastServer(portServer);
|
|
||||||
ClientB client0 = new ClientB();
|
|
||||||
ClientB client1 = new ClientB();
|
|
||||||
ClientB client2 = new ClientB();
|
|
||||||
|
|
||||||
Thread ts = new Thread(server);
|
|
||||||
ts.start();
|
|
||||||
|
|
||||||
client0.test("add$$$" + 77 + "$$$Delta$$$LocalHost");
|
|
||||||
client1.test("add$$$" + 75 + "$$$Beta$$$LocalHost");
|
|
||||||
client2.test("add$$$" + 11 + "$$$Alpha$$$LocalHost");
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -3,45 +3,36 @@ package liste;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.concurrent.Semaphore;
|
import java.util.concurrent.Semaphore;
|
||||||
|
|
||||||
import nom.GestionnaireNom;
|
|
||||||
|
|
||||||
public class TraitementCmdListe implements Runnable{
|
public class TraitementCmdListe implements Runnable{
|
||||||
|
|
||||||
private String[] cmd;
|
String message;
|
||||||
private Semaphore semaphore;
|
Semaphore semaphore;
|
||||||
|
|
||||||
public TraitementCmdListe(String message, Semaphore semaphore) {
|
public TraitementCmdListe(String cmd, Semaphore semaphore) {
|
||||||
this.cmd = message.split("\\$\\$\\$", 0);
|
this.message = cmd;
|
||||||
this.semaphore = semaphore;
|
this.semaphore = semaphore;
|
||||||
if(cmd.length != 4) {
|
|
||||||
System.out.println("Erreur nombre d'arguments");
|
|
||||||
this.cmd = new String[] {"", "", "", ""};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
try {
|
try {
|
||||||
|
|
||||||
|
String[] cmd = message.split("\\$\\$\\$", 0); //vérifier longueur 4 ?? //TODO
|
||||||
String ordre = cmd[0];
|
String ordre = cmd[0];
|
||||||
String id = cmd[1];
|
String id = cmd[1];
|
||||||
String nom = cmd[2];
|
String nom = cmd[2];
|
||||||
String ip = cmd[3];
|
String ip = cmd[3];
|
||||||
|
|
||||||
if (ordre.equals("listRequest")) {
|
|
||||||
envoyerNom();
|
|
||||||
}
|
|
||||||
|
|
||||||
semaphore.acquireUninterruptibly();
|
semaphore.acquireUninterruptibly();
|
||||||
System.out.println("bloqué");
|
System.out.println("bloqué");
|
||||||
|
|
||||||
if (ordre.equals("delete")) {
|
if (ordre.equals("delete")) {
|
||||||
GestionnaireListeUtilisateur.setListeUtilisateur(supprimeUtilisateur(GestionnaireListeUtilisateur.getListeUtilisateur(), id));
|
GestionnaireListeUtilisateur.listeUtilisateur = supprimeUtilisateur(GestionnaireListeUtilisateur.listeUtilisateur, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ordre.equals("add")) {
|
if (ordre.equals("add")) {
|
||||||
GestionnaireListeUtilisateur.setListeUtilisateur(ajouteUtilisateur(GestionnaireListeUtilisateur.getListeUtilisateur(), id, nom, ip));
|
GestionnaireListeUtilisateur.listeUtilisateur = ajouteUtilisateur(GestionnaireListeUtilisateur.listeUtilisateur, id, nom, ip);
|
||||||
}
|
}
|
||||||
System.out.println("libéré");
|
System.out.println("libéré");
|
||||||
semaphore.release();
|
semaphore.release();
|
||||||
|
@ -49,7 +40,7 @@ public class TraitementCmdListe implements Runnable{
|
||||||
|
|
||||||
//Thread.sleep(1000);
|
//Thread.sleep(1000);
|
||||||
//System.out.println("fini " + id);
|
//System.out.println("fini " + id);
|
||||||
System.out.println(GestionnaireListeUtilisateur.getListeUtilisateur().get(0).nom);
|
System.out.println(GestionnaireListeUtilisateur.listeUtilisateur.get(0).nom);
|
||||||
|
|
||||||
} catch (Exception e) {}
|
} catch (Exception e) {}
|
||||||
|
|
||||||
|
@ -57,17 +48,6 @@ public class TraitementCmdListe implements Runnable{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//envoie la liste courrante d'utilisateur
|
|
||||||
public void envoyerNom() { //localHost TODO (gerer IP, unhandle exception ...)
|
|
||||||
|
|
||||||
UdpBroadcastClient client = new UdpBroadcastClient(ConstanteListeUtilisateur.NUM_PORT_SERVER,
|
|
||||||
"add"+ "$$$" + GestionnaireNom.getId() + "$$$" + GestionnaireNom.getNom() + "$$$" + "LocalHost");
|
|
||||||
Thread t = new Thread(client);
|
|
||||||
t.start();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// detecte les nouveaux utilisateurs entrant et les ajoute à la liste
|
// detecte les nouveaux utilisateurs entrant et les ajoute à la liste
|
||||||
private ArrayList<TypeListeUtilisateur> ajouteUtilisateur(ArrayList<TypeListeUtilisateur> listeUtilisateur, String id, String nom, String ip) {
|
private ArrayList<TypeListeUtilisateur> ajouteUtilisateur(ArrayList<TypeListeUtilisateur> listeUtilisateur, String id, String nom, String ip) {
|
||||||
|
|
|
@ -1,82 +1,34 @@
|
||||||
package nom;
|
package nom;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.io.IOException;
|
|
||||||
import java.net.InetAddress;
|
|
||||||
import java.net.UnknownHostException;
|
|
||||||
|
|
||||||
import liste.GestionnaireListeUtilisateur;
|
|
||||||
|
|
||||||
public class GestionnaireNom{
|
public class GestionnaireNom{
|
||||||
|
|
||||||
private static String idUtilisateur;
|
public int idUtilisateur;
|
||||||
private static String nomUtilisateur;
|
public String[] nomUtilisateur;
|
||||||
//public static String ipUtilisateur = InetAddress.getLocalHost().getHostName();
|
|
||||||
|
|
||||||
|
|
||||||
//Instance du gestionnaire de liste
|
|
||||||
static private GestionnaireNom uniqueInstance = null;
|
|
||||||
|
|
||||||
//Renvoie le gestionnaire de liste, ou le créé s'il n'existe pas encore
|
|
||||||
static public GestionnaireNom instance() {
|
|
||||||
//Si l'instance n'existe pas, on la créé
|
|
||||||
if (GestionnaireNom.uniqueInstance == null) {
|
|
||||||
GestionnaireNom.uniqueInstance = new GestionnaireNom();
|
|
||||||
}
|
|
||||||
|
|
||||||
return GestionnaireNom.uniqueInstance;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static String getNom() {
|
|
||||||
return nomUtilisateur;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static String getId() {
|
|
||||||
return idUtilisateur;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// attribue le nom "nom" à l'utilisateur
|
// attribue le nom "nom" à l'utilisateur
|
||||||
public static void setNom(String nom) {
|
public void nom(String[] nom) {
|
||||||
nomUtilisateur = nom;
|
verifierDisponibiliteNom(nom);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// renvoie l'ID d'un utilisateur ou 0 s'il n'existe pas (ou non en ligne)
|
// renvoie l'ID d'un utilisateur ou 0 s'il n'existe pas (ou non en ligne)
|
||||||
public String idFromNom(String nom) {
|
public int idFromNom(String[] nom) {
|
||||||
for (int i=0; i<GestionnaireListeUtilisateur.getListeUtilisateur().size(); i++) {
|
|
||||||
if (GestionnaireListeUtilisateur.getListeUtilisateur().get(i).nom.equals(nom)) {
|
|
||||||
return GestionnaireListeUtilisateur.getListeUtilisateur().get(i).id;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return "0";
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// renvoie 1 si le nom est disponible
|
// renvoie 1 si le nom est disponible
|
||||||
public static boolean verifierDisponibiliteNom(String nom) {
|
private int verifierDisponibiliteNom(String[] nom) {
|
||||||
|
|
||||||
for (int i=0; i<GestionnaireListeUtilisateur.getListeUtilisateur().size(); i++) {
|
|
||||||
if (GestionnaireListeUtilisateur.getListeUtilisateur().get(i).nom.equals(nom)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue