Revision
15297
Author
anthm
Date
2009-10-30 17:53:09 -0500 (Fri, 30 Oct 2009)

Log Message

add slide_write to switch_buffer

Modified Paths

Diff

Modified: freeswitch/trunk/src/include/switch_buffer.h (15296 => 15297)


--- freeswitch/trunk/src/include/switch_buffer.h	2009-10-30 22:12:51 UTC (rev 15296)
+++ freeswitch/trunk/src/include/switch_buffer.h	2009-10-30 22:53:09 UTC (rev 15297)
@@ -137,6 +137,8 @@
  */
 SWITCH_DECLARE(void) switch_buffer_zero(_In_ switch_buffer_t *buffer);
 
+SWITCH_DECLARE(switch_size_t) switch_buffer_slide_write(switch_buffer_t *buffer, const void *data, switch_size_t datalen);
+
 /*! \brief Destroy the buffer
  * \param buffer buffer to destroy
  * \note only neccessary on dynamic buffers (noop on pooled ones)

Modified: freeswitch/trunk/src/switch_buffer.c (15296 => 15297)


--- freeswitch/trunk/src/switch_buffer.c	2009-10-30 22:12:51 UTC (rev 15296)
+++ freeswitch/trunk/src/switch_buffer.c	2009-10-30 22:53:09 UTC (rev 15297)
@@ -280,6 +280,18 @@
 	return w;
 }
 
+SWITCH_DECLARE(switch_size_t) switch_buffer_slide_write(switch_buffer_t *buffer, const void *data, switch_size_t datalen)
+{
+	switch_size_t w;
+
+	if (!(w = switch_buffer_write(buffer, data, datalen))) {
+		switch_buffer_toss(buffer, datalen);
+		return switch_buffer_write(buffer, data, datalen);
+	}
+
+	return w;
+}
+
 SWITCH_DECLARE(void) switch_buffer_destroy(switch_buffer_t **buffer)
 {
 	if (buffer && *buffer) {