From 35e58f63beaf5467d9a2bac6f053ff86fd6eb36c Mon Sep 17 00:00:00 2001 From: Samuel Cormier-Iijima Date: Thu, 28 Feb 2008 16:17:35 -0500 Subject: [PATCH] Make backlog a gobject property --- gnio/gsocket.c | 25 ++++++++++++++++++++++--- gnio/gsocket.h | 3 +-- test/test-server.c | 2 +- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/gnio/gsocket.c b/gnio/gsocket.c index 0887202..4678e46 100644 --- a/gnio/gsocket.c +++ b/gnio/gsocket.c @@ -53,6 +53,7 @@ enum PROP_0, PROP_FD, PROP_BLOCKING, + PROP_BACKLOG, PROP_LOCAL_ADDRESS, PROP_REMOTE_ADDRESS }; @@ -61,6 +62,7 @@ struct _GSocketPrivate { gint fd; gboolean blocking; + gint backlog; GSocketAddress *local_address; GSocketAddress *remote_address; }; @@ -80,6 +82,10 @@ g_socket_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec g_value_set_boolean (value, socket->priv->blocking); break; + case PROP_BACKLOG: + g_value_set_int (value, socket->priv->backlog); + break; + case PROP_LOCAL_ADDRESS: g_value_set_object (value, socket->priv->local_address); break; @@ -108,6 +114,10 @@ g_socket_set_property (GObject *object, guint prop_id, const GValue *value, GPar g_socket_set_blocking (socket, g_value_get_boolean (value)); break; + case PROP_BACKLOG: + socket->priv->backlog = g_value_get_int (value); + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } @@ -161,6 +171,15 @@ g_socket_class_init (GSocketClass *klass) TRUE, G_PARAM_READWRITE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NICK)); + g_object_class_install_property (gobject_class, PROP_BACKLOG, + g_param_spec_int ("backlog", + "listen backlog", + "outstanding connections in the listen queue", + 0, + SOMAXCONN, + 10, + G_PARAM_READWRITE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NICK)); + g_object_class_install_property (gobject_class, PROP_LOCAL_ADDRESS, g_param_spec_object ("local-address", "local address", @@ -183,6 +202,7 @@ g_socket_init (GSocket *socket) socket->priv->fd = -1; socket->priv->blocking = TRUE; + socket->priv->backlog = 10; socket->priv->remote_address = NULL; socket->priv->local_address = NULL; } @@ -342,12 +362,11 @@ g_socket_get_remote_address (GSocket *socket, } void -g_socket_listen (GSocket *socket, - gint backlog) +g_socket_listen (GSocket *socket) { g_return_if_fail (G_IS_SOCKET (socket)); - listen (socket->priv->fd, backlog); + listen (socket->priv->fd, socket->priv->backlog); } gboolean diff --git a/gnio/gsocket.h b/gnio/gsocket.h index 625e24a..84e2ba9 100644 --- a/gnio/gsocket.h +++ b/gnio/gsocket.h @@ -95,8 +95,7 @@ gboolean g_socket_connect (GSocket *socket, GSocket * g_socket_accept (GSocket *socket, GError **error); -void g_socket_listen (GSocket *socket, - gint backlog); +void g_socket_listen (GSocket *socket); gssize g_socket_receive (GSocket *socket, gchar *buffer, diff --git a/test/test-server.c b/test/test-server.c index 601fe68..9d20622 100644 --- a/test/test-server.c +++ b/test/test-server.c @@ -67,7 +67,7 @@ int main (int argc, char *argv[]) return 0; } - g_socket_listen (socket, 10); + g_socket_listen (socket); g_print ("listening on port 31882...\n"); -- 2.20.1