|
From: Jacques F. <fe...@li...> - 2008-06-12 16:03:41
|
Super!! Je suis d'accord...
De toutes façons, il faut avancer... On en profitera pour expliquer
pourquoi on fait ça...
Jacques
Le 29 mai 08 à 15:46, Fabien MICHEL a écrit :
> Bonjour à tous,
>
> je m'apprête à valider la fin du mécanisme d'exception pour les
> différents appels aux fonctions organisationnelles (et aussi pour les
> messages).
> En fait il restait notamment l'exception pour createGroup.
> On obtient ça :
>
> <Kernel> : Runtime Agent Exception : Gpong-java2 killed !
> madkit.kernel.OrganizationRequestException: [Gpong-java2]'s request
> failed : Cannot create Group <public,graphic-ping-pong> : it
> already exists
> at madkit.kernel.Kernel.createGroup(Kernel.java:193)
> at madkit.kernel.AbstractAgent.createGroup(AbstractAgent.java:123)
> at madkit.kernel.AbstractAgent.createGroup(AbstractAgent.java:141)
> at madkit.demos.gpong.GPongAgent.activate(GPongAgent.java:56)
>
> C'est explicite.
>
> Cela donne un code comme ça pour ping pong par exemple :
>
> try {
> createGroup(true,"ping-pong",null,null);
> println ("No ping-pong group : I created one");
> creator=true;
> } catch (OrganizationRequestException e) {
> creator=false;
> println ("A ping-pong group already exists : I will join");
> }
> requestRole("ping-pong","player",null);
>
>
> Je trouve ça plus clair que le "-1", le code est aussi plus sécurisé
> du
> coup.
> Autre exemple sur tictactoe (ça donne un code vraiment plus simple,
> cf.
> la version actuelle)
>
> try {
> createGroup(true, community, group, null, null);
> gui.setColor(Piece.BLUE);
> master = true;
> gui.setMaster(master);
> gui.message("Hello I am the master");
> game.setWaiting(true);
> } catch (OrganizationRequestException e) { // group already
> exists
> gui.setColor(Piece.RED);
> game.setWaiting(true);
> }
> requestRole(community, group, "player", null);
> if(! master)
> sendMessage(community, group, "player",new
> ActMessage("joining"));
>
> Par ailleurs, getAgentWithRole retourne maintenant uniquement un agent
> différent, d'où la ligne de code précédente (le sendmessage)
> Ca évite d'écrire ça (il y en a partout en plus) :
>
> AgentAddress[] v = this.getAgentsWithRole(community, group,
> "player");
> for (int i = 0; i < v.length; i++) {
> AgentAddress agent = v[i];
> if (!agent.equals(getAddress())) {
> other = agent;
> break;
> }
> }
>
> Tout ça pour récupérer une adresse différente !! c'était trop.
>
> Je vais donc virer les codes de retour des différentes fonctions
> organisationnelles. Évidement, ca veut dire que certaines portions de
> code ne marcheront plus, mais c'est très vite corrigé : un try catch
> et
> c'est tout. Je vais corriger celles que je trouve mais ne soyez pas
> surpris si votre code vous renvoie des exceptions ;)
>
> Qu'en pensez-vous ?
>
> a+
> Fabien
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2008.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> Madkit-develop mailing list
> Mad...@li...
> https://lists.sourceforge.net/lists/listinfo/madkit-develop
|