maitretarot-devel-fr
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Maitretarot-devel-fr] test de libmaitretarot


From: philippe brochard
Subject: Re: [Maitretarot-devel-fr] test de libmaitretarot
Date: 12 May 2002 20:32:31 +0200
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2

Yves Mettier <address@hidden> writes:

> Coucou!
> 
> Je mets libmaitretarot a jour.
> Attention: j'ai change le protocole de la fonction. Je sens que tu vas
> pas aimer!!!

pourquoi ??? si c'est justifié, que ça apporte des choses ou que ça les
simplifie, pourquoi pas.

> Mais ma modification ne te force pas a te mettre a jour: ta fonction et
> la mienne portent un nom different, et les constantes de l'enum portent
> aussi des noms differents. Donc t'es pas oblige de mettre ca en priorite
> haute.
> 
> En attendant, voici mes modifs.
> Le prototype:
> 
> gint libmt_connect_to_socket (gchar * ip, guint16 port, GError **
> error);
> 
ouarf, c'est plus compliqué :)

> Renvoie un entier positif ou nul comme avant si tout va bien. Renvoie -1
> sinon (et plus tes constantes. Niark)

qu'est ce qu'elles t'on fait mes constantes ?

> Par contre, il y a un troisieme argument, GError **error, qui sert a
> recuperer ton code d'erreur, et plus si affinites!

ok, tout rentre dans l'ordre, j'ai un retour de la fonction
avec les != erreurs => parfait.

> Voici comment ca marche (inspire de la doc de glib):
> 
> GError *err = NULL;
> 
> sock = libmt_connect_to_socket ("127.0.0.1", 3551, &err);
> g_assert ((sock == -1 && err != NULL) || (sock >= 0 && err == NULL));
> if (err != NULL)
>   {
>     /* Report error to user, and free error */
>     g_assert (sock == -1);
>     fprintf (stderr, "Could not connect to server (%s)\n",
> err->message);
>     g_error_free (err);
>   } 
> else
>   {
>     /* Use file contents */
>     g_assert (sock >= 0);
>   }
> 
Ok

> 
> 
> Si ca c'est pas de la gestion d'erreur!!!
> Et en plus, ca me semble simple. Vire tous les g_assert et les
> commentaires: il ne reste plus que 5 lignes!
> 
ouais, c'est très bien, comme ça j'ai juste à gerer le retour de
la fonction et les messages sont tout fait (err->message).

Ben, tu vois fallait pas stresser, ça me plait et c'est adopté :)

> 
> 
> Un dernier mot sur libmaitretarot:
> On va la tester un moment pour savoir si c'est OK. Avant que ce ne soit
> OK, on se met d'accord pour faire des modifs et on les fait. Apres,
> quand c'est OK, il faudra vraiment se mettre d'accord pour faire la
> moindre modification dans libmaitretarot. Et quand c'est OK, je
> considere qu'on pourra aussi l'installer dans /usr. C'est pour ca qu'il
> faudra pas faire ce qu'on veut apres.
> 

Oui, c'est une bonne evolution.
Je commence à la tester tout de suite.

> En attendant, commentaires bienvenus ;-)
> 

le retour arrive :)


Sinon, tu as regarder la partie des encheres ? je n'arrive pas a voir
se qui ne vas pas.



Philippe

> Yves
> 
> 
> On 12 May 2002 15:38:14 +0200
> philippe brochard <address@hidden> wrote:
> 
> > 
> > Il manque la fonction 
> > 
> > player.c:52: warning: implicit declaration of function
> > `libmt_connect_to_socket'
> > 
> > dans net.c et net.h (qui est vide d'ailleurs)
> > 
> > 
> > resultat, le client ne peut pas se connecter à la socket.
> > 
> > voila à quoi elle resemble :
> > 
> > --- net.c
> > -----------------------------------------------------------------[...]
> > 
> > gint
> > connect_to_socket (GString * ip, guint16 port)
> > {
> >   struct hostent server_address, *address;
> >   struct sockaddr_in *client_sockaddr_in;
> >   gint sock;
> >   gint optval;
> > 
> >   if ((address = gethostbyname (ip->str)) == NULL)
> >     {
> >       return (MT_ERROR_SOCKET_GETHOST_FAILED);
> >     }
> > 
> >   memcpy (&server_address, address, sizeof (struct hostent));
> > 
> >   /* Open the server socket */
> > 
> >   sock = socket (AF_INET, SOCK_STREAM, 6);
> >   if (sock == -1)
> >     {
> >       return (MT_ERROR_SOCKET_SOCKET_FAILED);
> >     }
> > 
> >   optval = 1;
> >   setsockopt (sock, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof (gint));
> > 
> >   /* Get infos on the server */
> >   if ((client_sockaddr_in = g_malloc (sizeof (struct sockaddr_in))) ==
> >   NULL)
> >     {
> >       return (MT_ERROR_SOCKET_CREATION_FAILED);
> >     }
> > 
> >   client_sockaddr_in->sin_family = server_address.h_addrtype;
> >   client_sockaddr_in->sin_port = htons (port);
> >   memcpy ((gchar *) & (client_sockaddr_in->sin_addr.s_addr),
> >       server_address.h_addr, server_address.h_length);
> >   bzero ((gchar *) & (client_sockaddr_in->sin_zero),
> >      sizeof (struct sockaddr) - __SOCKADDR_COMMON_SIZE -
> >      sizeof (guint16) - sizeof (struct in_addr));
> > 
> >   /* Connect to the server as a client */
> > 
> >   if (connect
> >       (sock, (struct sockaddr *) client_sockaddr_in,
> >        sizeof (struct sockaddr_in)))
> >     {
> >       g_free (client_sockaddr_in);
> >       return (MT_ERROR_SOCKET_CONNECT_FAILED);
> >     }
> >   g_free (client_sockaddr_in);
> >   return (sock);
> > }
> > 
> > [...]
> > ---------------------------------------------------------------------
> > ------
> > 
> > 
> > et l'enum pour les erreurs va dans net.h :
> > 
> > -- net.h
> > ------------------------------------------------------------------[..
> > .]
> > 
> > typedef enum {
> >   MT_ERROR_SOCKET_GETHOST_FAILED = -1,
> >   MT_ERROR_SOCKET_SOCKET_FAILED = -2,
> >   MT_ERROR_SOCKET_CREATION_FAILED = -3,
> >   MT_ERROR_SOCKET_CONNECT_FAILED = -4 }
> > error_socket_e;
> > 
> > [...]
> > ---------------------------------------------------------------------
> > ------
> > 
> > 
> > 
> > 
> > 
> > Philippe
> > 
> > 
> > -- 
> > ,-------------------.         ,---------------,----------------------.
> > | Philippe Brochard |   ...   | address@hidden | http://hocwp.free.fr |
> > `------------------(_  (. .)  `---------------'----------------------'
> > -------------------ooO--(_)--Ooo--------------------------------------
> > 
> > _______________________________________________
> > Maitretarot-devel-fr mailing list
> > address@hidden
> > http://mail.freesoftware.fsf.org/mailman/listinfo/maitretarot-devel-fr
> 
> 
> -- 
> - Homepage - http://ymettier.free.fr                   -
> - GPG key  - http://ymettier.free.fr/gpg.txt           -
> - MyAM     - http://www.freesoftware.fsf.org/myam      -
> - GTKtalog - http://www.freesoftware.fsf.org/gtktalog  -
> 
> 
> _______________________________________________
> Maitretarot-devel-fr mailing list
> address@hidden
> http://mail.freesoftware.fsf.org/mailman/listinfo/maitretarot-devel-fr
> 
> 

-- 
,-------------------.         ,---------------,----------------------.
| Philippe Brochard |   ...   | address@hidden | http://hocwp.free.fr |
`------------------(_  (. .)  `---------------'----------------------'
-------------------ooO--(_)--Ooo--------------------------------------



reply via email to

[Prev in Thread] Current Thread [Next in Thread]