From fda5401ec167ff1f13aabe4fa0bba5e788ee7cd7 Mon Sep 17 00:00:00 2001 From: Thadeu Lima de Souza Cascardo Date: Sun, 2 Nov 2008 09:05:18 -0200 Subject: [PATCH] Added parser, server name and file descriptor to context --- tictactoe.c | 22 +++++++++------------- xmpp.c | 6 +++++- xmpp_internal.h | 4 ++++ 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/tictactoe.c b/tictactoe.c index 0049385..cc1dab5 100644 --- a/tictactoe.c +++ b/tictactoe.c @@ -46,37 +46,33 @@ myhook (void *data, int type, iks *stanza) } void -write_stream (int fd, char *server) +write_stream (hc_xmpp_t *xmpp); { char *buffer = NULL; asprintf (&buffer, "", server); - write (fd, buffer, strlen (buffer)); + "version='1.0' to='%s'>", xmpp->server); + write (xmpp->fd, buffer, strlen (buffer)); free (buffer); } void -loop (iksparser *parser, int fd) +loop (hc_xmpp_t *xmpp); { char buffer[4096]; int r; - while ((r = read (fd, buffer, sizeof (buffer))) > 0) - iks_parse (parser, buffer, r, 0); + while ((r = read (xmpp->fd, buffer, sizeof (buffer))) > 0) + iks_parse (xmpp->parser, buffer, r, 0); } int main (int argc, char **argv) { char *server = "jabber-br.org"; - int fd; - iksparser *parser; hc_xmpp_t *xmpp; dns_init (NULL, 1); - xmpp = hc_xmpp_new (); - fd = hc_tcp_connect (server, "xmpp-client"); - parser = iks_extra_stream_new (xmpp, myhook); - write_stream (fd, server); - loop (parser, fd); + xmpp = hc_xmpp_new (myhook, server); + write_stream (xmpp); + loop (xmpp); return 0; } diff --git a/xmpp.c b/xmpp.c index f42c55c..a6a0a09 100644 --- a/xmpp.c +++ b/xmpp.c @@ -20,11 +20,15 @@ #include #include "xmpp.h" #include "xmpp_internal.h" +#include "iksemel_extra.h" hc_xmpp_t * -hc_xmpp_new (void) +hc_xmpp_new (iksStreamHook *hook, char *server) { hc_xmpp_t *xmpp = malloc (sizeof (hc_xmpp_t)); + xmpp->server = strdup (server); + xmpp->parser = iks_extra_stream_new (xmpp, hook); + xmpp->fd = hc_tcp_connect (server, "xmpp-client"); xmpp->tls = NONE; xmpp->sasl = NONE; return xmpp; diff --git a/xmpp_internal.h b/xmpp_internal.h index a1431e9..f57c688 100644 --- a/xmpp_internal.h +++ b/xmpp_internal.h @@ -20,6 +20,7 @@ #ifndef HC_XMPP_INTERNAL_H #define HC_XMPP_INTERNAL_H +#include #include "xmpp.h" enum @@ -33,6 +34,9 @@ enum struct _hc_xmpp_t { + char *server; + iksparser *parser; + int fd; int tls; int sasl; }; -- 2.20.1