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.
TP2 publish - question1 - sendOrderedBroadcast
Re: TP2 publish - question1 - sendOrderedBroadcast
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.
"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.
Re: TP2 publish - question1 - sendOrderedBroadcast
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
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
Re: TP2 publish - question1 - sendOrderedBroadcast
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/
Map<SubscriberI, Integer> map = new HashMap<>();
et j'ai lu beaucoup sur developpez
https://www.developpez.net/forums/d4299 ... r-hashmap/
Re: TP2 publish - question1 - sendOrderedBroadcast
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.
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.
Qui est en ligne ?
Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité