AvahiBrowser::AvahiBrowser() : client(0), browser(0), resolver(0), services(), service_names(), changed(), cache_done(false), found_name(), found_host() { client = ga_client_new(GaClientFlags(0)); GError *error = 0; if (!ga_client_start(client, &error)) { gx_print_fatal( _("Avahi system error"), Glib::ustring::compose( _("%1\n\nuse command line arguments --rpchost and/or" " --rpcport to connect directly"), error->message)); } browser = ga_service_browser_new("_guitarix._tcp"); ga_service_browser_attach(browser, client, &error); g_signal_connect(browser, "new-service", G_CALLBACK(new_service), this); g_signal_connect(browser, "removed-service", G_CALLBACK(removed_service), this); g_signal_connect(browser, "cache-exhausted", G_CALLBACK(cache_exhausted), this); }
/** * Start a controller * * @param self The controller to start * @return -1 on errors, 0 on success */ gint sib_controller_start(SIBController* self) { // struct timeval tv; //const char *version; gint retvalue = -1; whiteboard_log_debug_fb(); #if AVAHI==1 GError *err = NULL; #endif g_return_val_if_fail(self != NULL, -1); #if AVAHI==1 if(ga_client_start( self->client, &err) == TRUE ) { retvalue = 0; } else if(err != NULL) { whiteboard_log_debug("Could not start avahi client: %s\n", err->message); g_error_free(err); } self->service_browser = ga_service_browser_new("_kspace._tcp"); if(self->service_browser) { if( ga_service_browser_attach(self->service_browser, self->client, &err) == TRUE) { retvalue = 0; } else if(err != NULL) { whiteboard_log_debug("Could not attach avahi service_browser: %s\n", err->message); g_error_free(err); } } g_signal_connect( G_OBJECT(self->service_browser), "new-service", (GCallback) sib_controller_new_service_cb, self); g_signal_connect( G_OBJECT(self->service_browser), "removed-service", (GCallback) sib_controller_removed_service_cb, self); g_signal_connect( G_OBJECT(self->service_browser), "all-for-now", (GCallback) sib_controller_all_for_now_cb, self); #else retvalue = 0; #endif whiteboard_log_debug_fe(); return retvalue; }