This commit is contained in:
parent
c1ce429b7b
commit
53249b33f2
5 changed files with 8 additions and 48 deletions
|
@ -9,6 +9,7 @@ dabcast_SOURCES = \
|
|||
dabroadcast.cc \
|
||||
group.cc \
|
||||
lowreceiver.cc \
|
||||
lowreceiver_ab.cc \
|
||||
lowsender.cc \
|
||||
highreceiver.cc \
|
||||
message.cc \
|
||||
|
|
|
@ -114,4 +114,8 @@ void Group::sendto(Message &msg, short index){
|
|||
}
|
||||
}
|
||||
|
||||
short Group::getCount(){
|
||||
return _addrs.size();
|
||||
}
|
||||
|
||||
#undef DEBUG
|
||||
|
|
|
@ -36,6 +36,7 @@ class Group {
|
|||
void sendto(Message &msg, short index);
|
||||
void broadcast(Message &msg);
|
||||
short getIndex();
|
||||
short getCount();
|
||||
|
||||
};
|
||||
|
||||
|
|
|
@ -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<MessageCellAb *> fifo;
|
||||
std::list<MessageCellAb *>::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");
|
||||
}
|
||||
|
|
|
@ -13,6 +13,8 @@ class MessageCellAb {
|
|||
|
||||
Message * message;
|
||||
MessageCellAb::Type type;
|
||||
TimeStamp * maximum;
|
||||
short count;
|
||||
|
||||
MessageCellAb();
|
||||
};
|
||||
|
|
Loading…
Add table
Reference in a new issue