1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| package network;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.ArrayList;
import common.Container;
import manager.Writer;
public class Receiver extends Thread {
private ArrayList<BufferedReader> in = new ArrayList<BufferedReader>(); // Liste de tous les br (l'id dans l'arraylist est la même pour chaque partie du container)
private Writer out; // Le writer est un objet que j'ai créé (contrairement au Writer de java.io) qui contient un PipedWriter avec un systeme pour "normaliser" les paquets.
private String packet;
private Container container;
public Receiver(Writer _out, Container _container) { // Constructeur
this.out = _out;
container = _container;
}
public void run() {
while (true) {
for (BufferedReader br : in) { // Parcours de la liste de in
try {
if (br.ready()) { // Si il y a quelque chose à lire
packet = br.readLine(); // on le lit
System.out.println("Receiver : J'ai reçu le paquet " + packet); // Mouchard
out.send(packet, in.indexOf(br)); // On l'envoi dans le tube au Handler (traitement du packet)
}
} catch (IOException e) {
int id = in.indexOf(br);
System.out.println("Probleme avec le compte d'id : " + id + ", kick du compte");
container.kickID(id);
}
try {
Thread.sleep(10); // J'ai essayé de faire dormir le Thread après chaque br testé, mais ça ne change rien.
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public void add(BufferedReader _in) {
in.add(_in);
}
public void remove(int id) {
in.remove(id);
}
} |
Partager