void NetworkServicesProviderAvahi::avahiClientCallback(AvahiClient* client, AvahiClientState state, void* userdata)
{
    NetworkServicesProviderAvahi* p = static_cast<NetworkServicesProviderAvahi*>(userdata);

    switch (state) {
    case AVAHI_CLIENT_FAILURE:
        break;

    case AVAHI_CLIENT_S_REGISTERING:
    case AVAHI_CLIENT_S_RUNNING:
    case AVAHI_CLIENT_S_COLLISION:
        p->m_avahiBrowser = avahi_service_type_browser_new(
            client, 
            AVAHI_IF_UNSPEC,
            AVAHI_PROTO_UNSPEC, 
            0, 
            (AvahiLookupFlags)0, 
            serviceTypeBrowserCallback, 
            userdata);
        p->m_allForNow++;
        break;

    case AVAHI_CLIENT_CONNECTING:
        break;
    }
}
示例#2
0
static void browse_all(Config *c) {
    AvahiServiceTypeBrowser *b;

    assert(c);

    if (!(b = avahi_service_type_browser_new(
            client,
            AVAHI_IF_UNSPEC,
            AVAHI_PROTO_UNSPEC,
            c->domain,
            0,
            service_type_browser_callback,
            c))) {

        fprintf(stderr, ("avahi_service_type_browser_new() failed: %s\n"), avahi_strerror(avahi_client_errno(client)));
        avahi_simple_poll_quit(simple_poll);
    }

    n_cache_exhausted++;
    n_all_for_now++;
}