diff --git a/src/Makefile.am b/src/Makefile.am index 136662e..3938c9b 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -9,6 +9,7 @@ dabcast_SOURCES = \ dabroadcast.cc \ group.cc \ lowreceiver.cc \ + lowreceiver_ab.cc \ lowsender.cc \ highreceiver.cc \ message.cc \ diff --git a/src/group.cc b/src/group.cc index 173029e..712710f 100644 --- a/src/group.cc +++ b/src/group.cc @@ -114,4 +114,8 @@ void Group::sendto(Message &msg, short index){ } } +short Group::getCount(){ + return _addrs.size(); +} + #undef DEBUG diff --git a/src/group.h b/src/group.h index 394a4ae..3936bd1 100644 --- a/src/group.h +++ b/src/group.h @@ -36,6 +36,7 @@ class Group { void sendto(Message &msg, short index); void broadcast(Message &msg); short getIndex(); + short getCount(); }; diff --git a/src/lowreceiver.cc b/src/lowreceiver.cc index 95acfd5..bf54fdb 100644 --- a/src/lowreceiver.cc +++ b/src/lowreceiver.cc @@ -1,6 +1,5 @@ #include "lowreceiver.h" -#include "messagecell_ab.h" LowReceiver::LowReceiver(short port_low, short port_high, @@ -105,53 +104,6 @@ void LowReceiver::manage(Message * mesg){ } } -void LowReceiver::manage_abcast(Message * mesg) { - static std::list fifo; - std::list::iterator iter; - printf("LowReceiver::manage_abcast -- init\n"); - - // identifiant = horloge + id_site_emeteur - bool firstSeenMessage = true; - bool iAmTheEmitter = false; - - if (mesg->getStamp().getIndex() == _group.getIndex()){ - iAmTheEmitter = true; - } - - if (iAmTheEmitter){ - printf("LowReceiver::manage_abcast - Received my own message \n"); - //FIXME: faire la gestion du abcast/send ici, c'est plus simple que - //de partager une variable+mutex avec le sender - } else { - printf("LowReceiver::manage_abcast - Received a message from a friend\n"); - for (iter = fifo.begin(); iter != fifo.end(); iter++){ - MessageCellAb * cur = *iter; - if (cur->message == mesg) { - printf("LowReceiver::manage_abcast -- message seen\n"); - firstSeenMessage = false; - break; - } - } - - if (firstSeenMessage){ - // si le message est vu pour la premiere fois: - // - on l'ajoute dans la liste d'attente - MessageCellAb * cell = new MessageCellAb(); - cell->message = new Message(*mesg); //FIXME: make a copy; - cell->type = MessageCellAb::TYPE_TEMPORARY; - // - on retourne une estampille(reception) a l'emeteur - - } else { - // sinon - // - l'estampille du message est mise a jour - TimeStamp * stamp = new TimeStamp (Protocol::TYPE_ABCAST, mesg->getData(), mesg->getDataSize()); - - // - le message est marqué comme final - // - on défile les estampille finale la - } - } -} - void LowReceiver::manage_cbcast(Message * mesg) { printf("LowReceiver::manage_cbcast -- init\n"); } diff --git a/src/messagecell_ab.h b/src/messagecell_ab.h index e6e6dd2..d433ad3 100644 --- a/src/messagecell_ab.h +++ b/src/messagecell_ab.h @@ -13,6 +13,8 @@ class MessageCellAb { Message * message; MessageCellAb::Type type; + TimeStamp * maximum; + short count; MessageCellAb(); };