guint max_mem;
g_mutex_init (&sink->client_lock);
+ sink->clients = NULL;
+ sink->num_v4_unique = 0;
+ sink->num_v4_all = 0;
+ sink->num_v6_unique = 0;
+ sink->num_v6_all = 0;
+
sink->socket = DEFAULT_SOCKET;
sink->socket_v6 = DEFAULT_SOCKET;
sink->used_socket = DEFAULT_USED_SOCKET;
gst_multiudpsink_add_internal (GstMultiUDPSink * sink, const gchar * host,
gint port, gboolean lock)
{
+ GSocketFamily family;
GstUDPClient *client;
GstUDPClient udpclient;
GTimeVal now;
find = g_list_find_custom (sink->clients, &udpclient,
(GCompareFunc) client_compare);
+
if (find) {
client = (GstUDPClient *) find->data;
+ family = g_socket_address_get_family (client->addr);
+
GST_DEBUG_OBJECT (sink, "found %d existing clients with host %s, port %d",
client->refcount, host, port);
client->refcount++;
if (!client)
goto error;
+ family = g_socket_address_get_family (client->addr);
+
g_get_current_time (&now);
client->connect_time = GST_TIMEVAL_TO_TIME (now);
GST_DEBUG_OBJECT (sink, "add client with host %s, port %d", host, port);
sink->clients = g_list_prepend (sink->clients, client);
+
+ if (family == G_SOCKET_FAMILY_IPV4)
+ ++sink->num_v4_unique;
+ else
+ ++sink->num_v6_unique;
}
+ if (family == G_SOCKET_FAMILY_IPV4)
+ ++sink->num_v4_all;
+ else
+ ++sink->num_v6_all;
+
if (lock)
g_mutex_unlock (&sink->client_lock);
g_list_foreach (sink->clients, (GFunc) free_client, sink);
g_list_free (sink->clients);
sink->clients = NULL;
+ sink->num_v4_unique = 0;
+ sink->num_v4_all = 0;
+ sink->num_v6_unique = 0;
+ sink->num_v6_all = 0;
if (lock)
g_mutex_unlock (&sink->client_lock);
}