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 \
|
dabroadcast.cc \
|
||||||
group.cc \
|
group.cc \
|
||||||
lowreceiver.cc \
|
lowreceiver.cc \
|
||||||
|
lowreceiver_ab.cc \
|
||||||
lowsender.cc \
|
lowsender.cc \
|
||||||
highreceiver.cc \
|
highreceiver.cc \
|
||||||
message.cc \
|
message.cc \
|
||||||
|
|
|
@ -114,4 +114,8 @@ void Group::sendto(Message &msg, short index){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
short Group::getCount(){
|
||||||
|
return _addrs.size();
|
||||||
|
}
|
||||||
|
|
||||||
#undef DEBUG
|
#undef DEBUG
|
||||||
|
|
|
@ -36,6 +36,7 @@ class Group {
|
||||||
void sendto(Message &msg, short index);
|
void sendto(Message &msg, short index);
|
||||||
void broadcast(Message &msg);
|
void broadcast(Message &msg);
|
||||||
short getIndex();
|
short getIndex();
|
||||||
|
short getCount();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
|
|
||||||
#include "lowreceiver.h"
|
#include "lowreceiver.h"
|
||||||
#include "messagecell_ab.h"
|
|
||||||
|
|
||||||
LowReceiver::LowReceiver(short port_low,
|
LowReceiver::LowReceiver(short port_low,
|
||||||
short port_high,
|
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) {
|
void LowReceiver::manage_cbcast(Message * mesg) {
|
||||||
printf("LowReceiver::manage_cbcast -- init\n");
|
printf("LowReceiver::manage_cbcast -- init\n");
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,6 +13,8 @@ class MessageCellAb {
|
||||||
|
|
||||||
Message * message;
|
Message * message;
|
||||||
MessageCellAb::Type type;
|
MessageCellAb::Type type;
|
||||||
|
TimeStamp * maximum;
|
||||||
|
short count;
|
||||||
|
|
||||||
MessageCellAb();
|
MessageCellAb();
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Reference in a new issue