GL-MPRI-2014 / Ocawai

OCAWAI
8 stars 3 forks source link

Network server #130

Closed dbaelde closed 9 years ago

dbaelde commented 9 years ago

Quand on lance dummy_serv.native cela fait simplement Unix.Unix_error(1, "bind", ""). L'utilisateur ne devrait jamais voir de telles erreurs: il lui faut un message expliquant clairement la cause de l'erreur. Même si pour l'instant le dummy_server ne peut pas vraiment fonctionner pour une raison X ou Y, on peut déja améliorer ces messages d'erreur. Dans la même veine, prévoir une interface en ligne de commande pour choisir le port, nombre de joueur, taille de la map, etc. quand on lance le serveur.

En lisant le code, on voit bien la source de l'erreur: game#init_net reçoit 3 comme paramètre pour le port... (Au passage, quand on a une fonction avec quatre arguments entiers, c'est une bonne idée de leur donner des labels pour faciliter la lecture et éviter des erreurs dans l'ordre de ces arguments.)

Les gens concernés: @Mazzocchi @teoule17 et peut être @juliengrange .

Mazzocchi commented 9 years ago

J'avais déjà signalé dummy_serv comme incohérent ! Deux lignes de code perdu dans un module sans un seul commentaire ne devrait pas exister. En ce qui me concerne je ne savais pas que bind pouvait planter autrement que par "port already in use" une erreur qui est attrapée. J'ai fait une modification, je pense qu'elle est suffisante.

dbaelde commented 9 years ago

Nicolas, n'hésite pas à modifier dummy_serv, et même init_net si besoin. Comme dit il y a 10 jours, il n'y avait plus de périmètres fixés strictement et chacun peut coder où il veut, à condition de communiquer un minimum. Et là de toute façon, cette zone du code concerne vraiment le serveur et pas le game engine --- en réalité init_net pourrait et devrait d'ailleurs ne plus être une méthode du game_engine, j'en ai parlé avec @teoule17 et il était de cet avis aussi.

Ta modification df433eaf9f3f63c5d2b6e7bdb95f84dfffad2515 va dans le bon sens mais n'est pas suffisante pour avoir un serveur utilisable: même si l'exception Failure "port already in use" est plus lisible qu'une Unix_error, cela reste très fruste comme interface utilisateur.

Edit: je vois en fait un problème dans le commit mentionné plus haut: tu y rattrapes toutes les erreurs ayant trait à bind, et les signales comme un port invalide, mais je suis sûr qu'il y a encore d'autres erreurs possibles qui ne devraient pas être traduites ainsi.