3 import java.util.ArrayList;
5 public class JaceBuffer {
10 private ArrayList<Message> liste;
11 boolean msgConsumed; // attribut utiliser ds JaceSender pr savoir si msg
12 // enlever de la liste de JaceBuffer
14 boolean stopGet = false;
19 /* liste=new Vector(); */
20 liste = new ArrayList<Message>();
25 System.out.println("new JaceBuffer .... id=" + id + " .....");
34 // retourne l'index d'un Message de meme tag ET meme destinataire ET meme
36 private synchronized int exist(Message msg) {
40 while ((existe == -1) && (index < liste.size())) {
42 if (msg.getReceiver().getRank() == (((Message) liste.get(index))
43 .getReceiver().getRank())) {
44 for (int i = 0; i < liste.size(); i++)
45 // System.out.println("exist id="+id+" element "+i+" to "+((Message)liste.get(i)).getReceiver().getRank());
54 public synchronized void add(Message msg) {
57 synchronized (liste) {
60 // si existe deja 1 Message de meme tag ET meme envoyeur ET meme
61 // destinataire, on l'ecrase
65 // System.out.println("id="+id+" remplacer un message a la place "+is+" ds le buffer pour "+msg.getReceiver().getRank()+" liste size "+liste.size());
68 // si existe pas de Message de meme tag ET meme envoyeur ET meme
69 // destinataire, on l'ajoute
71 // System.out.println("id="+id+" ajouter un message au buffer pour "+msg.getReceiver().getRank()+" liste size "+liste.size());
81 } catch (Exception e) {
82 System.out.println("error notifying Sender :" + e);
87 public synchronized Message getMessageAt(int index) {
88 // System.out.println("size = " + liste.size());
89 return (Message) liste.get(index);
92 public synchronized Message get() {
95 // tant que aucun message, j'attend
96 while (liste.isEmpty() && stopGet == false) {
98 // System.out.println("BUFFER : rien, j'attend, liste vide "+liste.isEmpty());
100 } catch (Exception e) {
104 // System.out.println("Took message from Buffer");
107 synchronized (liste) {
110 tmp = (Message) ((Message) liste.get(0)).clone();
112 // System.out.println("id="+id+" get message du buffer pour "+tmp.getReceiver().getRank()+" liste size "+liste.size());
113 } catch (Exception e) {
114 System.out.println("unable to get message :" + e);
119 time = System.currentTimeMillis();
123 public synchronized void viewAll() {
124 if (liste.isEmpty()) {
125 // System.out.println("pas de msg a envoyer");
129 System.out.print("id=" + id + " nb msg ds JaceBuffer : "
131 for (int i = 0; i < liste.size(); i++) {
132 msg = (Message) liste.get(i);
133 sender = msg.getSender();
134 dest = msg.getReceiver();
135 System.out.print("\nmsg " + i + " : tag = " + msg.getTag()
136 + ", src : " + sender.getRank() + " "
137 + sender.getHostIP() + ", dest : " + dest.getRank()
138 + " " + dest.getHostIP() + ", data = " + msg.getData()
145 public synchronized int getSize() {