const Ekiga::CallManager::InterfaceList Opal::H323::CallManager::get_interfaces () const { Ekiga::CallManager::InterfaceList ilist; OpalListenerList listeners = h323_endpoint.GetListeners (); for (int i = 0 ; i < listeners.GetSize () ; i++) { Ekiga::CallManager::Interface iface; PIPSocket::Address address; WORD port; PString proto_prefix = listeners[i].GetLocalAddress ().GetProtoPrefix (); listeners[i].GetLocalAddress ().GetIpAndPort (address, port); iface.voip_protocol = get_protocol_name (); iface.id = "*"; iface.protocol = (const char*) proto_prefix.Left (proto_prefix.GetLength () - 1); // Strip final $ delimiter iface.port = (unsigned int) port; ilist.push_back (iface); } return ilist; }
void Avahi::PresencePublisher::publish (G_GNUC_UNUSED const Ekiga::PersonalDetails& details_) { if (group != NULL) { Ekiga::CallManager::InterfaceList interfaces; AvahiStringList* txt_record = NULL; int ret; txt_record = prepare_txt_record (); for (Ekiga::CallCore::const_iterator iter = call_core.begin (); iter != call_core.end (); ++iter) { Ekiga::CallManager::InterfaceList ints = (*iter)->get_interfaces (); interfaces.insert (interfaces.begin (), ints.begin (), ints.end ()); } for (Ekiga::CallManager::InterfaceList::const_iterator iter = interfaces.begin (); iter != interfaces.end (); ++iter) { gchar *typ = NULL; typ = g_strdup_printf ("_%s._%s", iter->voip_protocol.c_str (), iter->protocol.c_str ()); /* FIXME: no collision checking here */ ret = avahi_entry_group_update_service_txt_strlst (group, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, (AvahiPublishFlags)0, name, typ, NULL, txt_record); g_free (typ); } avahi_string_list_free (txt_record); } }
void Avahi::PresencePublisher::add_services () { Ekiga::CallManager::InterfaceList interfaces; AvahiStringList* txt_record = NULL; for (Ekiga::CallCore::iterator iter = call_core.begin (); iter != call_core.end (); ++iter) { Ekiga::CallManager::InterfaceList ints = (*iter)->get_interfaces (); interfaces.insert (interfaces.begin (), ints.begin (), ints.end ()); } txt_record = prepare_txt_record (); for (Ekiga::CallManager::InterfaceList::const_iterator iter = interfaces.begin (); iter != interfaces.end (); ++iter) { gchar *typ = NULL; typ = g_strdup_printf ("_%s._%s", iter->voip_protocol.c_str (), iter->protocol.c_str ()); /* FIXME: no collision checking here */ avahi_entry_group_add_service_strlst (group, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, (AvahiPublishFlags)0, name, typ, NULL, NULL, iter->port, txt_record); g_free (typ); } avahi_string_list_free (txt_record); avahi_entry_group_commit (group); }