This commit is contained in:
parent
e698a27482
commit
1257dd6a1a
1 changed files with 18 additions and 8 deletions
|
@ -14,6 +14,7 @@ void LowReceiver::manage_abcast(Message * mesg) {
|
||||||
static short minimum_deliverable_stamp = -1;
|
static short minimum_deliverable_stamp = -1;
|
||||||
|
|
||||||
std::list<MessageCellAb *>::iterator iter;
|
std::list<MessageCellAb *>::iterator iter;
|
||||||
|
std::list<MessageCellAb *>::iterator iter2;
|
||||||
printf("LowReceiver::manage_abcast -- init\n");
|
printf("LowReceiver::manage_abcast -- init\n");
|
||||||
|
|
||||||
// identifiant = horloge + id_site_emeteur
|
// identifiant = horloge + id_site_emeteur
|
||||||
|
@ -111,26 +112,35 @@ void LowReceiver::manage_abcast(Message * mesg) {
|
||||||
// l'estampille...
|
// l'estampille...
|
||||||
Message * nMsg = new Message(Protocol::TYPE_ABCAST,
|
Message * nMsg = new Message(Protocol::TYPE_ABCAST,
|
||||||
st,
|
st,
|
||||||
nSt->getRaw(),
|
nSt.getRaw(),
|
||||||
nSt->getRawSize());
|
nSt.getRawSize());
|
||||||
|
|
||||||
_group.sendto(*(cell->message), cell->message->getStamp().getIndex());
|
_group.sendto(*(cell->message), cell->message->getStamp().getIndex());
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// sinon
|
// sinon
|
||||||
// - l'estampille du message est mise a jour
|
// - l'estampille du message est mise à jour
|
||||||
TimeStamp st = mesg->getStamp();
|
TimeStamp st = mesg->getStamp();
|
||||||
TimeStamp nSt = _clock.inc();
|
TimeStamp nSt = _clock.inc();
|
||||||
|
|
||||||
Message * nMsg = new Message(Protocol::TYPE_ABCAST,
|
Message * nMsg = new Message(Protocol::TYPE_ABCAST,
|
||||||
st,
|
st,
|
||||||
nSt->getRaw(),
|
cell->message->getData(),
|
||||||
nSt->getRawSize());
|
cell->message->getDataSize());
|
||||||
|
|
||||||
// - le message est marqué comme final
|
// - le message est ajouté dans deliverable
|
||||||
cell->type = MessageCellAb::TYPE_DEFINITIVE;
|
fifo_deliverable.push_back(nMsg);
|
||||||
|
|
||||||
|
// Trouver l'iterator
|
||||||
|
for (iter = fifo_get.begin(); iter != fifo_get.end(); iter++){
|
||||||
|
MessageCellAb * itCell = *iter;
|
||||||
|
if (cell == itCell){
|
||||||
|
iter2 = iter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// normalement on a trouvé l'iterateur...
|
||||||
|
fifo_get.erase(iter2);
|
||||||
|
|
||||||
// - FIXME: on défile les estampille finale la
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue