From d295f0a4cbc5f96b0aa65a3d005f98bc31511068 Mon Sep 17 00:00:00 2001 From: Jon Bergli Heier Date: Mon, 23 Aug 2010 18:36:29 +0200 Subject: Implemented a communication event source for the main loop. This source will deal with communication between servers. More to be added and cleaned up soon. --- servers.c | 50 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) (limited to 'servers.c') diff --git a/servers.c b/servers.c index 22e431d..94bbaf4 100644 --- a/servers.c +++ b/servers.c @@ -1,8 +1,56 @@ #include "servers.h" #include "conf.h" +#include + GSList *servers = NULL; +gboolean server_sync(struct server *server) { + GError *error = NULL; + GSocketConnectable *addr; + GSocketAddressEnumerator *enumerator; + GSocketAddress *sockaddr; + GSocketConnection *conn = NULL; + GSocketClient *client; + GTimer *timer = g_timer_new(); + + addr = g_network_address_new(server->host, server->port); + enumerator = g_socket_connectable_enumerate(addr); + g_object_unref(addr); + + client = g_socket_client_new(); + + while(conn == NULL && (sockaddr = g_socket_address_enumerator_next(enumerator, NULL, &error))) { + conn = g_socket_client_connect(client, (GSocketConnectable*)sockaddr, NULL, &error); + g_object_unref(sockaddr); + } + + if(conn == NULL) { + g_warning(error->message); + g_error_free(error); + return FALSE; + } + + GSocket *socket = g_socket_connection_get_socket(conn); + + g_debug("connected"); + + g_socket_send(socket, "ping\n", 5, NULL, NULL); + gchar buffer[0x400]; + g_socket_receive(socket, buffer, 0x400, NULL, NULL); + if(buffer[4] == '\n') { + buffer[4] = '\0'; + g_debug("got response: %s", buffer); + g_debug("time: %f ms", g_timer_elapsed(timer, NULL) * 1000); + } + + g_timer_destroy(timer); + + g_socket_close(socket, NULL); + + return TRUE; +} + gboolean server_add(const gchar *host, const guint16 port) { struct server *server = g_new0(struct server, 1); @@ -35,7 +83,7 @@ void servers_init() { gsize length; gchar **s = conf_get_string_list("audist", "servers", &length); for(int i = 0; i < length; i++) { - server_add(s[i], 0); + server_add(s[i], 7681); g_debug(" server %d: %s", i, s[i]); } } -- cgit v1.2.3