void Publisher::entryGroupCallback(AvahiEntryGroup *g, AvahiEntryGroupState state, void *context) { Publisher *publisher = (Publisher*) context; const char* name = publisher->info.getServiceName().c_str(); const int port = publisher->info.getPort(); // callback called whenever our entry group state changes switch (state) { case AVAHI_ENTRY_GROUP_ESTABLISHED: std::cout << "Registration ok:" << name <<":" << port << " (" << publisher->serviceType << ")" << std::endl; break; case AVAHI_ENTRY_GROUP_COLLISION: // build new name publisher->nextName(); // retry publisher->createServices(avahi_entry_group_get_client(g)); break; case AVAHI_ENTRY_GROUP_FAILURE: std::cerr << "Registration failure (" << avahi_strerror(avahi_client_errno(avahi_entry_group_get_client(g))) << ")" << std::endl; publisher->quit(); break; case AVAHI_ENTRY_GROUP_UNCOMMITED: case AVAHI_ENTRY_GROUP_REGISTERING: ; } }
static void _entry_group_cb(AvahiEntryGroup *g, AvahiEntryGroupState state, void *userdata) { AvahiSessionImplData *idata = userdata; g_return_if_fail(g == idata->group || idata->group == NULL); switch(state) { case AVAHI_ENTRY_GROUP_ESTABLISHED: purple_debug_info("bonjour", "Successfully registered service.\n"); break; case AVAHI_ENTRY_GROUP_COLLISION: purple_debug_error("bonjour", "Collision registering entry group.\n"); /* TODO: Handle error - this should log out the account. (Possibly with "wants to die")*/ break; case AVAHI_ENTRY_GROUP_FAILURE: purple_debug_error("bonjour", "Error registering entry group: %s\n.", avahi_strerror(avahi_client_errno(avahi_entry_group_get_client(g)))); /* TODO: Handle error - this should log out the account.*/ break; case AVAHI_ENTRY_GROUP_UNCOMMITED: case AVAHI_ENTRY_GROUP_REGISTERING: break; } }
static void dnssd_callback(AvahiEntryGroup *g, /* I - Service */ AvahiEntryGroupState state, /* I - Registration state */ void *context) /* I - Printer */ { (void)context; if (g == NULL || (g_options.dnssd_data->ipp_ref != NULL && g_options.dnssd_data->ipp_ref != g)) return; switch (state) { case AVAHI_ENTRY_GROUP_ESTABLISHED : /* The entry group has been established successfully */ NOTE("Service entry for the printer successfully established."); break; case AVAHI_ENTRY_GROUP_COLLISION : ERR("DNS-SD service name for this printer already exists"); case AVAHI_ENTRY_GROUP_FAILURE : ERR("Entry group failure: %s\n", avahi_strerror(avahi_client_errno(avahi_entry_group_get_client(g)))); g_options.terminate = 1; break; case AVAHI_ENTRY_GROUP_UNCOMMITED: case AVAHI_ENTRY_GROUP_REGISTERING: default: break; } }
void CommunicationManager::entryGroupCallback(AvahiEntryGroup *g, AvahiEntryGroupState state, AVAHI_GCC_UNUSED void *userdata) { CommunicationManager* cm = CommunicationManager::getInstance(); cm->group = g; /* Called whenever the entry group state changes */ switch (state) { case AVAHI_ENTRY_GROUP_ESTABLISHED: { /* The entry group has been established successfully */ cout << "Service '" << cm->name << "' successfully established." << endl; break; } case AVAHI_ENTRY_GROUP_COLLISION: { char *n; /* A service name collision with a remote service * happened. Let's pick a new name */ n = avahi_alternative_service_name(cm->name); avahi_free(cm->name); cm->name = n; cout << "Service name collision, renaming service to '" << cm->name << "'" << endl; /* And recreate the services */ cm->createServices(avahi_entry_group_get_client(g)); break; } case AVAHI_ENTRY_GROUP_FAILURE: { cout << "Entry group failure: " << avahi_strerror( avahi_client_errno(avahi_entry_group_get_client(g))) << endl; /* Some kind of failure happened while we were registering our * services */ avahi_simple_poll_quit(cm->simplePoll); break; } case AVAHI_ENTRY_GROUP_UNCOMMITED: case AVAHI_ENTRY_GROUP_REGISTERING: { break; } } }
void rb_daap_mdns_avahi_set_entry_group (AvahiEntryGroup *eg) { if (eg != NULL) { g_assert (entry_group == NULL); g_assert (avahi_entry_group_get_client (eg) == client); } entry_group = eg; }
static void entry_group_callback(AvahiEntryGroup *g, AvahiEntryGroupState state, void *userdata) { assert(g == group || group == NULL); group = g; /* Called whenever the entry group state changes */ switch (state) { case AVAHI_ENTRY_GROUP_ESTABLISHED : /* The entry group has been established successfully */ tvhlog(LOG_INFO, "AVAHI", "Service '%s' successfully established.", name); break; case AVAHI_ENTRY_GROUP_COLLISION : { char *n; /* A service name collision with a remote service * happened. Let's pick a new name */ n = avahi_alternative_service_name(name); avahi_free(name); name = n; tvhlog(LOG_ERR, "AVAHI", "Service name collision, renaming service to '%s'", name); /* And recreate the services */ create_services(avahi_entry_group_get_client(g)); break; } case AVAHI_ENTRY_GROUP_FAILURE : tvhlog(LOG_ERR, "AVAHI", "Entry group failure: %s", avahi_strerror(avahi_client_errno(avahi_entry_group_get_client(g)))); break; case AVAHI_ENTRY_GROUP_UNCOMMITED: case AVAHI_ENTRY_GROUP_REGISTERING: ; } }
void PublishAvahi::entry_group_callback(AvahiEntryGroup *g, AvahiEntryGroupState state, AVAHI_GCC_UNUSED void *userdata) { assert(g == group || group == NULL); group = g; /* Called whenever the entry group state changes */ switch (state) { case AVAHI_ENTRY_GROUP_ESTABLISHED : /* The entry group has been established successfully */ logO << "Service '" << name << "' successfully established.\n"; break; case AVAHI_ENTRY_GROUP_COLLISION : { char *n; /* A service name collision with a remote service * happened. Let's pick a new name */ n = avahi_alternative_service_name(name); avahi_free(name); name = n; logO << "Service name collision, renaming service to '" << name << "'\n"; /* And recreate the services */ static_cast<PublishAvahi*>(userdata)->create_services(avahi_entry_group_get_client(g)); break; } case AVAHI_ENTRY_GROUP_FAILURE : logE << "Entry group failure: " << avahi_strerror(avahi_client_errno(avahi_entry_group_get_client(g))) << "\n"; /* Some kind of failure happened while we were registering our services */ avahi_simple_poll_quit(simple_poll); break; case AVAHI_ENTRY_GROUP_UNCOMMITED: case AVAHI_ENTRY_GROUP_REGISTERING: ; } }
static void egroup_callback(AvahiEntryGroup *g, AvahiEntryGroupState state, AVAHI_GCC_UNUSED void *userdata) { switch (state) { case AVAHI_ENTRY_GROUP_ESTABLISHED: /* The entry group has been established successfully */ debug(1, "avahi: service '%s' successfully added.", service_name); break; case AVAHI_ENTRY_GROUP_COLLISION: { char *n; /* A service name collision with a remote service * happened. Let's pick a new name */ n = avahi_alternative_service_name(service_name); avahi_free(service_name); service_name = n; debug(2, "avahi: service name collision, renaming service to '%s'", service_name); /* And recreate the services */ register_service(avahi_entry_group_get_client(g)); break; } case AVAHI_ENTRY_GROUP_FAILURE: debug(1, "avahi: entry group failure: %s", avahi_strerror(avahi_client_errno(avahi_entry_group_get_client(g)))); break; case AVAHI_ENTRY_GROUP_UNCOMMITED: debug(2, "avahi: service '%s' group is not yet committed.", service_name); break; case AVAHI_ENTRY_GROUP_REGISTERING: debug(2, "avahi: service '%s' group is registering.", service_name); break; default: debug(1, "avahi: unhandled egroup state: %d", state); break; } }
static void epc_service_group_cb (AvahiEntryGroup *group, AvahiEntryGroupState state, gpointer data) { EpcService *self = data; GError *error = NULL; if (self->group) g_assert (group == self->group); else self->group = group; switch (state) { case AVAHI_ENTRY_GROUP_REGISTERING: case AVAHI_ENTRY_GROUP_ESTABLISHED: break; case AVAHI_ENTRY_GROUP_UNCOMMITED: epc_service_publish (self); break; case AVAHI_ENTRY_GROUP_COLLISION: epc_dispatcher_handle_collision (self->dispatcher, self->domain); break; case AVAHI_ENTRY_GROUP_FAILURE: { AvahiClient *client = avahi_entry_group_get_client (group); gint error_code = avahi_client_errno (client); g_warning ("%s: Failed to publish service records: %s.", G_STRFUNC, avahi_strerror (error_code)); epc_shell_restart_avahi_client (G_STRLOC); break; } default: g_warning ("%s: Unexpected state.", G_STRFUNC); break; } g_clear_error (&error); }
static void entry_group_callback(AvahiEntryGroup *g, AvahiEntryGroupState state, AVAHI_GCC_UNUSED void *userdata) { assert(g == group || group == NULL); group = g; /* Called whenever the entry group state changes */ switch (state) { case AVAHI_ENTRY_GROUP_ESTABLISHED : /* The entry group has been established successfully */ logging_printf(LOGGING_INFO, "Service '%s' successfully established.\n", sd_name_copy); break; case AVAHI_ENTRY_GROUP_COLLISION : { char *n; /* A service name collision with a remote service * happened. Let's pick a new name */ n = avahi_alternative_service_name( sd_name_copy ); avahi_free(sd_name_copy); sd_name_copy = n; logging_printf(LOGGING_WARN, "Service name collision, renaming service to '%s'\n", sd_name_copy); /* And recreate the services */ create_services( avahi_entry_group_get_client(g) ); break; } case AVAHI_ENTRY_GROUP_FAILURE : logging_printf(LOGGING_WARN, "Entry group failure: %s\n", avahi_strerror(avahi_client_errno(avahi_entry_group_get_client(g)))); /* Some kind of failure happened while we were registering our services */ avahi_threaded_poll_quit(threaded_poll); break; case AVAHI_ENTRY_GROUP_UNCOMMITED: case AVAHI_ENTRY_GROUP_REGISTERING: ; } }
static void entry_group_callback(AvahiEntryGroup * g, AvahiEntryGroupState state, void *userdata) { Game *game = (Game *) userdata; /* Called whenever the entry group state changes */ switch (state) { case AVAHI_ENTRY_GROUP_ESTABLISHED: /* The entry group has been established successfully */ log_message(MSG_INFO, _("Avahi registration successful.\n")); break; case AVAHI_ENTRY_GROUP_COLLISION:{ /* A service name collision happened. Let's pick a new name */ gchar *n = avahi_alternative_service_name(name); avahi_free(name); name = n; log_message(MSG_INFO, _ ("Avahi service name collision, renaming service to '%s'.\n"), name); /* And recreate the services */ create_services(avahi_entry_group_get_client(g), game); break; } case AVAHI_ENTRY_GROUP_FAILURE: /* Some kind of failure happened while we were registering */ log_message(MSG_ERROR, _("Avahi error: %s\n"), "Some kind of failure happened while we were registering"); break; case AVAHI_ENTRY_GROUP_UNCOMMITED: case AVAHI_ENTRY_GROUP_REGISTERING: break; } }
static void _avahi_entry_group_callback(AvahiEntryGroup *g, AvahiEntryGroupState state, void *userdata) { char *new_name; avahi_service_t *svc = (avahi_service_t *)userdata; if (db) fprintf(stderr, "in _avahi_entry_group_callback %d 0x%p\n", state, svc); if (g != _group && _group != NULL) { rfbLog("avahi_entry_group_callback fatal error (group).\n"); clean_up_exit(1); } if (userdata == NULL) { rfbLog("avahi_entry_group_callback fatal error (userdata).\n"); clean_up_exit(1); } switch(state) { case AVAHI_ENTRY_GROUP_ESTABLISHED: rfbLog("Avahi group %s established.\n", svc->name); #if 0 /* is this the segv problem? */ free(svc); #endif break; case AVAHI_ENTRY_GROUP_COLLISION: new_name = avahi_alternative_service_name(svc->name); _avahi_create_services(new_name, svc->host, svc->port); rfbLog("Avahi Entry group collision\n"); avahi_free(new_name); break; case AVAHI_ENTRY_GROUP_FAILURE: rfbLog("Avahi Entry group failure: %s\n", avahi_strerror(avahi_client_errno( avahi_entry_group_get_client(g)))); break; default: break; } if (db) fprintf(stderr, "out _avahi_entry_group_callback\n"); }
static void _buddy_icon_group_cb(AvahiEntryGroup *g, AvahiEntryGroupState state, void *userdata) { BonjourDnsSd *data = userdata; AvahiSessionImplData *idata = data->mdns_impl_data; g_return_if_fail(g == idata->buddy_icon_group || idata->buddy_icon_group == NULL); switch(state) { case AVAHI_ENTRY_GROUP_ESTABLISHED: purple_debug_info("bonjour", "Successfully registered buddy icon data.\n"); case AVAHI_ENTRY_GROUP_COLLISION: purple_debug_error("bonjour", "Collision registering buddy icon data.\n"); break; case AVAHI_ENTRY_GROUP_FAILURE: purple_debug_error("bonjour", "Error registering buddy icon data: %s\n.", avahi_strerror(avahi_client_errno(avahi_entry_group_get_client(g)))); break; case AVAHI_ENTRY_GROUP_UNCOMMITED: case AVAHI_ENTRY_GROUP_REGISTERING: break; } }
void announcer::on_failure(AvahiEntryGroup *group) { boost::system::error_code error(avahi_client_errno(avahi_entry_group_get_client(group)), boost::system::system_category()); handler(error); }
void entry_group_callback(AvahiEntryGroup *g, AvahiEntryGroupState state, void *userdata) { /* Called whenever the entry group state changes */ char * name = (char *)userdata; switch (state) { case AVAHI_ENTRY_GROUP_ESTABLISHED : /* The entry group has been established successfully */ fprintf(stderr, "Service '%s' successfully established.\n", name); break; case AVAHI_ENTRY_GROUP_COLLISION : break; case AVAHI_ENTRY_GROUP_FAILURE : fprintf(stderr, "Entry group failure: %s\n", avahi_strerror(avahi_client_errno(avahi_entry_group_get_client(g)))); break; case AVAHI_ENTRY_GROUP_UNCOMMITED: case AVAHI_ENTRY_GROUP_REGISTERING: break; } }
/* Runs in Avahi mainloop context */ static void service_entry_group_callback(AvahiEntryGroup *g, AvahiEntryGroupState state, void *userdata) { struct service *s = userdata; pa_assert(s); switch (state) { case AVAHI_ENTRY_GROUP_ESTABLISHED: pa_log_info("Successfully established service %s.", s->service_name); break; case AVAHI_ENTRY_GROUP_COLLISION: { char *t; t = avahi_alternative_service_name(s->service_name); pa_log_info("Name collision, renaming %s to %s.", s->service_name, t); pa_xfree(s->service_name); s->service_name = t; publish_service(NULL, s); break; } case AVAHI_ENTRY_GROUP_FAILURE: { pa_log("Failed to register service: %s", avahi_strerror(avahi_client_errno(avahi_entry_group_get_client(g)))); avahi_entry_group_free(g); s->entry_group = NULL; break; } case AVAHI_ENTRY_GROUP_UNCOMMITED: case AVAHI_ENTRY_GROUP_REGISTERING: ; } }
void CZeroconfAvahi::groupCallback(AvahiEntryGroup *fp_group, AvahiEntryGroupState f_state, void * fp_data) { CZeroconfAvahi* p_instance = static_cast<CZeroconfAvahi*>(fp_data); //store our thread ID and check for shutdown -> check details in destructor p_instance->m_thread_id = pthread_self(); if (p_instance->m_shutdown) { avahi_threaded_poll_quit(p_instance->mp_poll); return; } switch (f_state) { case AVAHI_ENTRY_GROUP_ESTABLISHED : // The entry group has been established successfully CLog::Log(LOGDEBUG, "CZeroconfAvahi::groupCallback: Service successfully established"); break; case AVAHI_ENTRY_GROUP_COLLISION : { //need to find the ServiceInfo struct for this group tServiceMap::iterator it = p_instance->m_services.begin(); for(; it != p_instance->m_services.end(); ++it) { if (it->second->mp_group == fp_group) break; } if( it != p_instance->m_services.end() ) { char* alt_name = avahi_alternative_service_name( it->second->m_name.c_str() ); it->second->m_name = alt_name; avahi_free(alt_name); CLog::Log(LOGNOTICE, "CZeroconfAvahi::groupCallback: Service name collision. Renamed to: %s", it->second->m_name.c_str()); p_instance->addService(it->second, p_instance->mp_client); } break; } case AVAHI_ENTRY_GROUP_FAILURE: CLog::Log(LOGERROR, "CZeroconfAvahi::groupCallback: Entry group failure: %s ", (fp_group) ? avahi_strerror(avahi_client_errno(avahi_entry_group_get_client(fp_group))) : "Unknown"); //free the group and set to 0 so it may be added later if (fp_group) { //need to find the ServiceInfo struct for this group tServiceMap::iterator it = p_instance->m_services.begin(); for (; it != p_instance->m_services.end(); ++it) { if (it->second->mp_group == fp_group) { avahi_entry_group_free(it->second->mp_group); it->second->mp_group = 0; if (it->second->mp_txt) { avahi_string_list_free(it->second->mp_txt); it->second->mp_txt = NULL; } break; } } } break; case AVAHI_ENTRY_GROUP_UNCOMMITED: case AVAHI_ENTRY_GROUP_REGISTERING: default: break; } }
/* Called whenever the entry group state changes */ static void entry_group_callback(AvahiEntryGroup *g, AvahiEntryGroupState state, AVAHI_GCC_UNUSED void *userdata) { struct runtime_data r; assert(g == _group || _group == NULL); _group = g; switch (state) { case AVAHI_ENTRY_GROUP_FAILURE : ap_log_error(APLOG_MARK, APLOG_ERR, 0, r.main_server, "Entry group failure: %s", avahi_strerror(avahi_client_errno(avahi_entry_group_get_client(g)))); avahi_simple_poll_quit(_poll); break; case AVAHI_ENTRY_GROUP_COLLISION : case AVAHI_ENTRY_GROUP_ESTABLISHED : case AVAHI_ENTRY_GROUP_UNCOMMITED: case AVAHI_ENTRY_GROUP_REGISTERING: /* empty */ break; } }