]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
add slide_write to switch_buffer
authorAnthony Minessale <anthony.minessale@gmail.com>
Fri, 30 Oct 2009 22:53:09 +0000 (22:53 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Fri, 30 Oct 2009 22:53:09 +0000 (22:53 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@15297 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/include/switch_buffer.h
src/switch_buffer.c

index f2dd8a9daf7cb9ef13945c71aec056c3a1d5d99c..f31663989a6e4c3c6e516bddffc6e4f533aa232f 100644 (file)
@@ -137,6 +137,8 @@ SWITCH_DECLARE(switch_size_t) switch_buffer_toss(_In_ switch_buffer_t *buffer, _
  */
 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)
index e7700745ad8b2fe71d7f28092118b3a7f338e675..dc91a6539ddad123041ddd9125bea1d47e4f4838 100644 (file)
@@ -280,6 +280,18 @@ SWITCH_DECLARE(switch_size_t) switch_buffer_zwrite(switch_buffer_t *buffer, cons
        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) {