address-pool: add clear method
authorWim Taymans <wim.taymans@collabora.co.uk>
Wed, 14 Nov 2012 15:17:33 +0000 (16:17 +0100)
committerWim Taymans <wim.taymans@collabora.co.uk>
Wed, 14 Nov 2012 15:20:36 +0000 (16:20 +0100)
gst/rtsp-server/rtsp-address-pool.c
gst/rtsp-server/rtsp-address-pool.h

index 957814e..194e290 100644 (file)
@@ -120,6 +120,29 @@ gst_rtsp_address_pool_new (void)
   return pool;
 }
 
+/**
+ * gst_rtsp_address_pool_clear:
+ * @pool: a #GstRTSPAddressPool
+ *
+ * Clear all addresses in @pool. There should be no outstanding
+ * allocations.
+ */
+void
+gst_rtsp_address_pool_clear (GstRTSPAddressPool * pool)
+{
+  GstRTSPAddressPoolPrivate *priv;
+
+  g_return_if_fail (GST_IS_RTSP_ADDRESS_POOL (pool));
+  g_return_if_fail (pool->priv->allocated == NULL);
+
+  priv = pool->priv;
+
+  g_mutex_lock (&priv->lock);
+  g_list_free_full (priv->addresses, (GDestroyNotify) free_range);
+  priv->addresses = NULL;
+  g_mutex_unlock (&priv->lock);
+}
+
 static gboolean
 fill_address (const gchar * address, guint16 port, Addr * addr)
 {
index 57a52fc..d29e1e0 100644 (file)
@@ -64,6 +64,7 @@ GType                  gst_rtsp_address_pool_get_type        (void);
 /* create a new address pool */
 GstRTSPAddressPool *   gst_rtsp_address_pool_new             (void);
 
+void                   gst_rtsp_address_pool_clear           (GstRTSPAddressPool * pool);
 void                   gst_rtsp_address_pool_dump            (GstRTSPAddressPool * pool);
 
 gboolean               gst_rtsp_address_pool_add_range       (GstRTSPAddressPool * pool,