Some more work on the soup socket
authorMikael Hallendal <micke@imendio.com>
Sat, 12 Jul 2008 22:07:29 +0200
changeset 441 b666e4d63a3a
parent 440 23a40a2a7315
child 442 33224064e97a
Some more work on the soup socket
loudmouth/lm-socket.c
loudmouth/lm-socket.h
loudmouth/lm-soup-socket.c
loudmouth/lm-tcp-socket.c
--- a/loudmouth/lm-socket.c	Fri Jul 11 19:14:28 2008 +0300
+++ b/loudmouth/lm-socket.c	Sat Jul 12 22:07:29 2008 +0200
@@ -143,7 +143,7 @@
 lm_socket_read (LmSocket *socket,
                 gchar    *buf,
                 gsize     buf_len,
-                gsize     read_len)
+                gsize    *read_len)
 {
         g_return_val_if_fail (LM_IS_SOCKET (socket), FALSE);
         g_return_val_if_fail (buf != NULL, FALSE);
--- a/loudmouth/lm-socket.h	Fri Jul 11 19:14:28 2008 +0300
+++ b/loudmouth/lm-socket.h	Sat Jul 12 22:07:29 2008 +0200
@@ -47,7 +47,7 @@
         gboolean (*read)         (LmSocket *socket,
                                   gchar    *buf,
                                   gsize     buf_len,
-                                  gsize     read_len);
+                                  gsize    *read_len);
         void     (*disconnect)   (LmSocket *socket);
 };
 
@@ -71,7 +71,7 @@
 gboolean       lm_socket_read              (LmSocket    *socket,
                                             gchar       *buf,
                                             gsize        buf_len,
-                                            gsize        read_len);
+                                            gsize       *read_len);
 void           lm_socket_disconnect        (LmSocket    *socket);
 
 G_END_DECLS
--- a/loudmouth/lm-soup-socket.c	Fri Jul 11 19:14:28 2008 +0300
+++ b/loudmouth/lm-soup-socket.c	Sat Jul 12 22:07:29 2008 +0200
@@ -53,7 +53,7 @@
 static gboolean _soup_socket_read               (LmSocket          *socket,
                                                  gchar             *buf,
                                                  gsize              buf_len,
-                                                 gsize              read_len);
+                                                 gsize             *read_len);
 static void     _soup_socket_disconnect         (LmSocket          *socket);
 static void     _soup_socket_callback           (SoupSocket        *soup,
                                                  guint              status,
@@ -111,7 +111,6 @@
 	LmSoupSocketPriv *priv;
 
 	priv = GET_PRIV (soup_socket);
-
 }
 
 static void
@@ -130,6 +129,14 @@
 
 	priv = GET_PRIV (object);
 
+        if (priv->soup) {
+                if (soup_socket_is_connected (priv->soup)) {
+                        soup_socket_disconnect (priv->soup);
+                }
+
+                g_object_unref (priv->soup);
+        }
+
 	(G_OBJECT_CLASS (lm_soup_socket_parent_class)->finalize) (object);
 }
 
@@ -178,6 +185,15 @@
 {
         LmSoupSocketPriv *priv = GET_PRIV (socket);
 
+        if (priv->soup) {
+                g_warning ("Already have a SoupSocket");
+                return;
+        }
+
+        priv->soup = soup_socket_new ("remote-address", "kenny.imendio.com",
+                                      "non-blocking", TRUE,
+                                      NULL);
+
         soup_socket_connect_async (priv->soup,
                                    priv->cancellable,
                                    (SoupSocketCallback)_soup_socket_callback,
@@ -193,6 +209,7 @@
         SoupSocketIOStatus  io_status;
 
         if (!priv->soup || !soup_socket_is_connected (priv->soup)) {
+                g_warning ("Trying to write to an unconnected socket");
                 return FALSE;
         }
 
@@ -206,15 +223,24 @@
 
 static gboolean
 _soup_socket_read (LmSocket *socket,
-                  gchar    *buf,
-                  gsize     buf_len,
-                  gsize     read_len)
+                  gchar     *buf,
+                  gsize      buf_len,
+                  gsize     *read_len)
 {
         LmSoupSocketPriv *priv = GET_PRIV (socket);
+        SoupSocketIOStatus  io_status;
 
         if (!priv->soup || !soup_socket_is_connected (priv->soup)) {
+                g_warning ("Trying to read from an unconnected socket");
+                return FALSE;
         }
 
+        io_status = soup_socket_read (priv->soup,
+                                      buf, buf_len, read_len,
+                                      priv->cancellable,
+                                      NULL /* FIXME: Look at if the match is up tonight */);
+
+
         return FALSE;
 }
 
--- a/loudmouth/lm-tcp-socket.c	Fri Jul 11 19:14:28 2008 +0300
+++ b/loudmouth/lm-tcp-socket.c	Sat Jul 12 22:07:29 2008 +0200
@@ -48,7 +48,7 @@
 static gboolean tcp_socket_read                (LmSocket          *socket,
                                                 gchar             *buf,
                                                 gsize              buf_len,
-                                                gsize              read_len);
+                                                gsize             *read_len);
 static void     tcp_socket_disconnect          (LmSocket          *socket);
 
 G_DEFINE_TYPE_WITH_CODE (LmTcpSocket, lm_tcp_socket, G_TYPE_OBJECT,
@@ -180,9 +180,9 @@
 
 static gboolean
 tcp_socket_read (LmSocket *socket,
-                gchar    *buf,
-                gsize     buf_len,
-                gsize     read_len)
+                gchar     *buf,
+                gsize      buf_len,
+                gsize     *read_len)
 {
         return FALSE;
 }