[Top][All Lists]
[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--------------------------------------