From 99fdf857f95bf57b77291c9e1bf23dacd243f2d9 Mon Sep 17 00:00:00 2001 From: "Leandro A. F. Pereira" Date: Mon, 10 Aug 2009 15:10:40 -0300 Subject: Add "Accept connections" checkbox to Remote menu --- hardinfo2/menu.c | 4 ++++ hardinfo2/uidefs.h | 2 ++ hardinfo2/xmlrpc-server.c | 14 +++++++++++++- hardinfo2/xmlrpc-server.h | 2 +- 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/hardinfo2/menu.c b/hardinfo2/menu.c index dc197129..bc938994 100644 --- a/hardinfo2/menu.c +++ b/hardinfo2/menu.c @@ -123,6 +123,10 @@ static GtkToggleActionEntry toggle_entries[] = { "_Toolbar", NULL, NULL, G_CALLBACK(cb_toolbar)}, + {"ActAsServerAction", NULL, + "_Accept connections", NULL, + NULL, + G_CALLBACK(cb_act_as_server) } }; /* Implement a handler for GtkUIManager's "add_widget" signal. The UI manager diff --git a/hardinfo2/uidefs.h b/hardinfo2/uidefs.h index 10e8e4ba..cc8d057b 100644 --- a/hardinfo2/uidefs.h +++ b/hardinfo2/uidefs.h @@ -15,6 +15,8 @@ " " \ " " \ " " \ +" " \ +" " \ " " \ " " diff --git a/hardinfo2/xmlrpc-server.c b/hardinfo2/xmlrpc-server.c index 7ec90ab9..ebe35e08 100644 --- a/hardinfo2/xmlrpc-server.c +++ b/hardinfo2/xmlrpc-server.c @@ -571,13 +571,18 @@ void xmlrpc_server_init(void) { #ifdef HAS_LIBSOUP if (!loop) { + DEBUG("creating main loop"); loop = g_main_loop_new(NULL, FALSE); + } else { + DEBUG("using main loop instance %p", loop); } if (!handlers) { int i; handlers = g_hash_table_new(g_str_hash, g_str_equal); + DEBUG("registering handlers"); + for (i = 0; handler_table[i].method_name; i++) { g_hash_table_insert(handlers, handler_table[i].method_name, @@ -700,12 +705,17 @@ static void icon_server_callback(SoupServer * server, } #endif /* HAS_LIBSOUP */ -void xmlrpc_server_start(void) +void xmlrpc_server_start(GMainLoop *main_loop) { #ifdef HAS_LIBSOUP SoupServer *server; + if (main_loop) { + loop = main_loop; + } + if (!loop || !handlers) { + DEBUG("initializing server"); xmlrpc_server_init(); } @@ -714,8 +724,10 @@ void xmlrpc_server_start(void) g_error("Cannot create XML-RPC server. Aborting"); } + DEBUG("adding soup handlers for /xmlrpc"); soup_server_add_handler(server, "/xmlrpc", xmlrpc_server_callback, NULL, NULL); + DEBUG("adding soup handlers for /icon/"); soup_server_add_handler(server, "/icon/", icon_server_callback, NULL, NULL); diff --git a/hardinfo2/xmlrpc-server.h b/hardinfo2/xmlrpc-server.h index 5fbbc47c..2c47dd1c 100644 --- a/hardinfo2/xmlrpc-server.h +++ b/hardinfo2/xmlrpc-server.h @@ -18,7 +18,7 @@ #ifndef __XMLRPC_SERVER_H__ #define __XMLRPC_SERVER_H__ -void xmlrpc_server_start(void); +void xmlrpc_server_start(GMainLoop *main_loop); void xmlrpc_server_init(void); #endif /* __XMLRPC_SERVER_H__ */ \ No newline at end of file -- cgit v1.2.3