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) {