From 9558cc7031e84afc00eea62de22a494b34d653e9 Mon Sep 17 00:00:00 2001 From: Jon Bergli Heier Date: Sat, 21 Aug 2010 13:18:36 +0200 Subject: Added a server list command to the control service. --- control_commands.c | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) (limited to 'control_commands.c') diff --git a/control_commands.c b/control_commands.c index f5fbc64..61477ac 100644 --- a/control_commands.c +++ b/control_commands.c @@ -1,14 +1,27 @@ #include "control_commands.h" +#include "servers.h" #include #include -void control_commands_handle(GSocketConnection *connection, const gchar *cmd) { - gchar *args = strchr(cmd, ' '); - if(args != NULL) { - *args = '\0'; - args++; +static void list_servers(GSocketConnection *connection, const gchar *cmd) { + GSocket *socket = g_socket_connection_get_socket(connection); + + for(GSList *node = servers; node; node = g_slist_next(node)) { + struct server *s = node->data; + gchar *buffer = g_strdup_printf("%s:%d\n", s->host, s->port); + g_socket_send(socket, buffer, strlen(buffer), NULL, NULL); } +} - g_debug("handling command %s with arguments %s", cmd, args); +void control_commands_handle(GSocketConnection *connection, const gchar *cmd) { + if(g_strcmp0(cmd, "servers") == 0) { + list_servers(connection, cmd); + } else { + g_debug("unknown command"); + gchar *buf = g_strdup_printf("error: unknown command %s\n", cmd); + GSocket *socket = g_socket_connection_get_socket(connection); + g_socket_send(socket, buf, strlen(buf), NULL, NULL); + g_free(buf); + } } -- cgit v1.2.3