TP2 publish - question1 - sendOrderedBroadcast

Conception de logiciels Intranet : patrons et canevas

Modérateurs : Douin, graffion

NAVARRO
Messages : 41
Inscription : 02 oct. 2016 13:44

TP2 publish - question1 - sendOrderedBroadcast

Message par NAVARRO » 27 févr. 2018 14:37

Bonjour à tous,

Je ne sais pas si j'aurais le temps de finir le TP mais j'aimerais savoir si vous aviez bien compris la méthode sendOrderedBroadcast?

J'ai du mal à comprendre ce qu'il faut faire. Voici l'extrait du sujet:

/** Publication sur ce thème.
* Les souscripteurs sont notifiés selon leur priorité.
* Un souscripteur peut interrompre la notification, la méthode aborted
* de chaque souscripteur est appelée.
* @param topic le thème de publication
* @param arg un paramètre argument
* @exception si ce thème est absent ou qu'il n'y a aucun souscripteur sur ce thème
*/

public void sendOrderedBroadcast(Topic topic, Object arg) throws Exception;

Le mot ordered signifie qu'il faut trier les subscribers par priorité avant de faire l'update?
Que faire si plusieurs subscribers ont la même priorité? faut -il tenir compte de l'ordre d'inscription au mediator ou pas la peine?

J'ai utilisé un Map(String, SubscriberI ) pour la liste des subscribers. (add , remove etc.. )

Comment avez vous fait pour ce tri?
J'ai vu la méthode sort et l'interface Comparator mais j'ai du mal à l'utiliser.
J'ai fait des tests avec collator etc mais trop compliqué.

Du coup je pense continuer le TP à la question 2 mais il y a là aussi besoin du sendOrderedBroadcast ...

Merci pour votre aide.

Cordialement.
Vincent.

FlorentR
Messages : 17
Inscription : 12 nov. 2017 17:19

Re: TP2 publish - question1 - sendOrderedBroadcast

Message par FlorentR » 27 févr. 2018 15:43

Bonjour,

"Le mot ordered signifie qu'il faut trier les subscribers par priorité avant de faire l'update?".
Oui c'est ça.
J'ai utilisé dans sendOrderedBroadcast(Topic topic, Object arg) une nouvelle liste de SubscriberI (une liste interne) pour recevoir le contenu de la liste initiale (variable d'instance). Une liste initiale triée au sein même de sendOrderedBroadcast. J'ai opté pour un tri par ordre décroissant afin de répondre aux besoins d'envois qui doivent si, par exemple s3 est aborted, empêcher uniquement l'envoi pour les subscribers suivant.

STB
Messages : 26
Inscription : 22 févr. 2017 19:44

Re: TP2 publish - question1 - sendOrderedBroadcast

Message par STB » 27 févr. 2018 16:12

Bonjour,

Pour la liste des suscribers, une ArrayList <SubscriberI> suffit.
Le tri doit être fait dans la méthode sendOrderedBroadcast, selon la priorité.
Personnellement, j'ai d'utilisé un TreeSet avec Comparator.

Stéphane

tasic
Messages : 11
Inscription : 09 oct. 2016 14:13

Re: TP2 publish - question1 - sendOrderedBroadcast

Message par tasic » 27 févr. 2018 22:22

Pour ordonner par ordre décroissant mes priorités j'ai utilisé une hashmap
Map<SubscriberI, Integer> map = new HashMap<>();

et j'ai lu beaucoup sur developpez
https://www.developpez.net/forums/d4299 ... r-hashmap/

slash
Messages : 66
Inscription : 04 nov. 2017 2:45

Re: TP2 publish - question1 - sendOrderedBroadcast

Message par slash » 28 févr. 2018 0:05

Comme Stéphane, j'ai utilisé un Comparator déclaré en classe interne pour trier la liste par ordre décroissant des priorités.
J'avais initialement envisagé une Map pour récupérer souscripteurs et topics (l'itétareur était pour le coup direct), mais ça n'avait pas de sens (vu la méthode getTopic). Je me suis contenté de deux ArrayList, le code est assez concis et efficace.

Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité