tp_publish question 1 sendOrderedBroadcast

Conception de logiciels Intranet : patrons et canevas

Modérateurs : douinj, graffiop

ideligniere
Messages : 11
Inscription : 08 oct. 2017 23:08

tp_publish question 1 sendOrderedBroadcast

Message par ideligniere » 26 févr. 2019 18:32

Bonjour,

je ne vois pas bien comment implémenter la méthode sendOrderedBroadcast(Topic topic, Object arg).
Ce que je ne comprends pas dans la classe de test, c'est pourquoi s1 et s2 ne doivent pas être notifiés et s3 oui, alors que c'est sur s3 qu'est fait l'appel à setAborted() ?
Je dois sûrement manquer quelque chose, si quelqu'un peut m'éclairer ?

Merci d'avance

Isabelle

Maud-V
Messages : 2
Inscription : 25 févr. 2019 23:37

Re: tp_publish question 1 sendOrderedBroadcast

Message par Maud-V » 26 févr. 2019 20:32

Bonjour,
Dans le sendOrderedBroadcast, les souscripteurs sont notifiés par ordre de priorité.On a donc:
S5 (priorité 50) notifié, puis S4 (priorité 40)notifié, puis S3 (priorité 30)notifié.
S3 arrête la propagation de la notification car il est "aborted".
Ce qui implique que les souscripteurs qui ont une priorité plus faible que s3 ne sont pas notifiés.
Maud

ideligniere
Messages : 11
Inscription : 08 oct. 2017 23:08

Re: tp_publish question 1 sendOrderedBroadcast

Message par ideligniere » 26 févr. 2019 23:03

Merci Maud, ça m'a bien aidé.
J'arrive actuellement à notifier les souscripteurs voulus à condition de ne pas faire appel à setAborted() après l'appel à update(Object arg). J'utilise une boucle do/while pour le faire mais peut-être pas la bonne solution.
Pour l'instant je bloque à ce niveau...

Isabelle

bcalendreau
Messages : 40
Inscription : 07 oct. 2017 20:27

Re: tp_publish question 1 sendOrderedBroadcast

Message par bcalendreau » 27 févr. 2019 12:23

Une boucle while est sûrement plus appropriée

ideligniere
Messages : 11
Inscription : 08 oct. 2017 23:08

Re: tp_publish question 1 sendOrderedBroadcast

Message par ideligniere » 27 févr. 2019 19:53

J'ai fini par y arriver :)
Finalement, le problème c'était que je croyais qu'il fallait faire appel à setAborted() après update(Object arg) dans la sendOrderedBroadcast(Topic topic, Object arg), forcément, ça bloquait...

Merci à tous les deux !

Répondre