[gupnp-tools] discover: Make message-types configurable
- From: Jens Georg <jensgeorg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gupnp-tools] discover: Make message-types configurable
- Date: Sun, 10 Aug 2014 19:24:24 +0000 (UTC)
commit 8bc79d05c9d5ff7b69d73f69a7f620f00cfe766f
Author: Jens Georg <mail jensge org>
Date: Tue Jul 29 04:14:50 2014 +0200
discover: Make message-types configurable
Signed-off-by: Jens Georg <mail jensge org>
src/discover/gssdp-discover.c | 47 +++++++++++++++++++++++++++++++++++++---
1 files changed, 43 insertions(+), 4 deletions(-)
---
diff --git a/src/discover/gssdp-discover.c b/src/discover/gssdp-discover.c
index e97c0fa..685866c 100644
--- a/src/discover/gssdp-discover.c
+++ b/src/discover/gssdp-discover.c
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2011 Nokia Corporation.
+ * Copyright (C) 2014 Jens Georg <mail jensge org>
*
* Author: Jens Georg <jensg openismus com>
* <mail jensge org>
@@ -23,9 +24,11 @@
#include <glib.h>
#include <libgssdp/gssdp.h>
#include <stdlib.h>
+#include <string.h>
static char *interface = NULL;
static char *target = NULL;
+static char *message_type = NULL;
static int timeout = 0;
static int rescan_interval = 0;
@@ -41,6 +44,7 @@ static GOptionEntry entries[] =
{ "target", 't', 0, G_OPTION_ARG_STRING, &target, "SSDP TARGET to search for (default: ssdp:all)",
"TARGET" },
{ "timeout", 'n', 0, G_OPTION_ARG_INT, &timeout, "TIME in seconds to wait for replies before
exiting", "TIME" },
{ "rescan-interval", 'r', 0, G_OPTION_ARG_INT, &rescan_interval, "TIME in seconds to wait before
sending another discovery request", "TIME" },
+ { "message-type", 'm', 0, G_OPTION_ARG_STRING, &message_type, "TYPE of message
(available,unavailable,all)", "TYPE" },
{ NULL }
};
@@ -68,6 +72,16 @@ on_resource_available (GSSDPResourceBrowser *browser,
g_print (" Location: %s\n", (char *) l->data);
}
+void
+on_resource_unavailable (GSSDPResourceBrowser *browser,
+ const char *usn)
+{
+ g_print ("resource unavailable\n"
+ " USN: %s\n",
+ usn);
+}
+
+
int main (int argc, char *argv[]) {
GError *error = NULL;
GOptionContext *context;
@@ -108,10 +122,35 @@ int main (int argc, char *argv[]) {
(discover.client, "ssdp:all");
}
- g_signal_connect (discover.browser,
- "resource-available",
- G_CALLBACK (on_resource_available),
- &discover);
+ if (message_type == NULL) {
+ message_type = "available";
+ } else {
+ if (strncmp (message_type, "available", 9) != 0 &&
+ strncmp (message_type, "all", 3) != 0 &&
+ strncmp (message_type, "unavailable", 11) != 0) {
+ g_print ("Invalid message type. Use \"all\", ");
+ g_print ("\"available\" or \"unavailable\"\n");
+ exit (1);
+ }
+ }
+
+ if (strncmp (message_type, "available", 9) == 0 ||
+ strncmp (message_type, "all", 3) == 0) {
+ g_signal_connect (discover.browser,
+ "resource-available",
+ G_CALLBACK (on_resource_available),
+ &discover);
+ }
+
+ if (strncmp (message_type, "unavailable", 11) == 0 ||
+ strncmp (message_type, "all", 3) == 0) {
+ g_signal_connect (discover.browser,
+ "resource-unavailable",
+ G_CALLBACK (on_resource_unavailable),
+ &discover);
+ }
+
+ g_print ("Showing \"%s\" messages\n", message_type);
discover.main_loop = g_main_loop_new (NULL, FALSE);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]