traversity/traversity

Port traversity-test to the new api

19 months ago, Gary Kramlich
70a777539441
Parents 29a65eb4a571
Children ead5bb1bc3f0
Port traversity-test to the new api

Testing Done:
Ran and verified that it went to a discovering state and kept waiting for the state to change to unable to discover or discovered.

Reviewed at https://reviews.imfreedom.org/r/1940/
--- a/traversity-test/traversity-test.c Sat Oct 22 16:48:51 2022 -0500
+++ b/traversity-test/traversity-test.c Sat Oct 22 16:49:40 2022 -0500
@@ -16,15 +16,37 @@
}
static void
-traversity_test_ready_cb(GObject *obj, GAsyncResult *result, gpointer data) {
+traversity_test_notify_status_cb(GObject *obj,
+ G_GNUC_UNUSED GParamSpec *pspec,
+ gpointer data)
+{
TraversityDiscoverer *discoverer = TRAVERSITY_DISCOVERER(obj);
GError *error = NULL;
GMainLoop *loop = data;
- gboolean success = FALSE;
+ const char *status = "unknown";
+ gboolean quit = FALSE;
- success = traversity_discoverer_discover_finish(discoverer, result, &error);
+ switch(traversity_discoverer_get_status(discoverer)) {
+ case TRAVERSITY_DISCOVERER_STATUS_UNDISCOVERED:
+ status = "undiscovered";
+ break;
+ case TRAVERSITY_DISCOVERER_STATUS_UNABLE_TO_DISCOVER:
+ status = "unable to discover";
+ quit = TRUE;
+ break;
+ case TRAVERSITY_DISCOVERER_STATUS_DISCOVERING:
+ status = "discovering";
+ break;
+ case TRAVERSITY_DISCOVERER_STATUS_DISCOVERED:
+ status = "discovered";
+ quit = TRUE;
+ break;
+ default:
+ status = "unknown";
+ break;
+ }
- g_message("success: %d", success);
+ g_message("status: %s", status);
g_message("error: %s", error ? error->message : "none");
traversity_test_output_address("local ipv4",
@@ -36,7 +58,9 @@
traversity_test_output_address("public ipv4",
traversity_discoverer_get_public_ipv6(discoverer));
- g_main_loop_quit(loop);
+ if(quit) {
+ g_main_loop_quit(loop);
+ }
}
gint
@@ -47,7 +71,9 @@
loop = g_main_loop_new(NULL, FALSE);
discoverer = g_object_new(TRAVERSITY_TYPE_UPNP_DISCOVERER, NULL);
- traversity_discoverer_discover_async(discoverer, NULL, traversity_test_ready_cb, loop);
+ g_signal_connect(discoverer, "notify::status",
+ G_CALLBACK(traversity_test_notify_status_cb), loop);
+ traversity_discoverer_discover(discoverer);
g_main_loop_run(loop);