This commit is contained in:
glenux 2006-02-05 21:00:58 +00:00
parent c1ce429b7b
commit 53249b33f2
5 changed files with 8 additions and 48 deletions

View file

@ -9,6 +9,7 @@ dabcast_SOURCES = \
dabroadcast.cc \
group.cc \
lowreceiver.cc \
lowreceiver_ab.cc \
lowsender.cc \
highreceiver.cc \
message.cc \

View file

@ -114,4 +114,8 @@ void Group::sendto(Message &msg, short index){
}
}
short Group::getCount(){
return _addrs.size();
}
#undef DEBUG

View file

@ -36,6 +36,7 @@ class Group {
void sendto(Message &msg, short index);
void broadcast(Message &msg);
short getIndex();
short getCount();
};

View file

@ -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");
}

View file

@ -13,6 +13,8 @@ class MessageCellAb {
Message * message;
MessageCellAb::Type type;
TimeStamp * maximum;
short count;
MessageCellAb();
};