mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-08-14 09:58:17 +00:00
these aren't the droids you're looking for, move along....
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@6453 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
@@ -46,6 +46,7 @@ struct switch_buffer {
|
||||
switch_size_t datalen;
|
||||
switch_size_t max_len;
|
||||
switch_size_t blocksize;
|
||||
switch_mutex_t *mutex;
|
||||
uint32_t flags;
|
||||
uint32_t id;
|
||||
int32_t loops;
|
||||
@@ -95,6 +96,33 @@ SWITCH_DECLARE(switch_status_t) switch_buffer_create_dynamic(switch_buffer_t **b
|
||||
return SWITCH_STATUS_MEMERR;
|
||||
}
|
||||
|
||||
SWITCH_DECLARE(void) switch_buffer_add_mutex(switch_buffer_t *buffer, switch_mutex_t *mutex)
|
||||
{
|
||||
buffer->mutex = mutex;
|
||||
}
|
||||
|
||||
SWITCH_DECLARE(void) switch_buffer_lock(switch_buffer_t *buffer)
|
||||
{
|
||||
if (buffer->mutex) {
|
||||
switch_mutex_lock(buffer->mutex);
|
||||
}
|
||||
}
|
||||
|
||||
SWITCH_DECLARE(switch_status_t) switch_buffer_trylock(switch_buffer_t *buffer)
|
||||
{
|
||||
if (buffer->mutex) {
|
||||
return switch_mutex_lock(buffer->mutex);
|
||||
}
|
||||
return SWITCH_STATUS_FALSE;
|
||||
}
|
||||
|
||||
SWITCH_DECLARE(void) switch_buffer_unlock(switch_buffer_t *buffer)
|
||||
{
|
||||
if (buffer->mutex) {
|
||||
switch_mutex_unlock(buffer->mutex);
|
||||
}
|
||||
}
|
||||
|
||||
SWITCH_DECLARE(switch_size_t) switch_buffer_len(switch_buffer_t *buffer)
|
||||
{
|
||||
|
||||
@@ -224,7 +252,7 @@ SWITCH_DECLARE(switch_size_t) switch_buffer_write(switch_buffer_t *buffer, const
|
||||
}
|
||||
*/
|
||||
if (switch_test_flag(buffer, SWITCH_BUFFER_FLAG_DYNAMIC)) {
|
||||
if (freespace < datalen) {
|
||||
if (freespace < datalen && (!buffer->max_len || (buffer->datalen + datalen <= buffer->max_len))) {
|
||||
switch_size_t new_size, new_block_size;
|
||||
|
||||
new_size = buffer->datalen + datalen;
|
||||
@@ -266,6 +294,18 @@ SWITCH_DECLARE(void) switch_buffer_zero(switch_buffer_t *buffer)
|
||||
buffer->head = buffer->data;
|
||||
}
|
||||
|
||||
SWITCH_DECLARE(switch_size_t) switch_buffer_zwrite(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_zero(buffer);
|
||||
return switch_buffer_write(buffer, data, datalen);
|
||||
}
|
||||
|
||||
return w;
|
||||
}
|
||||
|
||||
SWITCH_DECLARE(void) switch_buffer_destroy(switch_buffer_t **buffer)
|
||||
{
|
||||
if (buffer && *buffer) {
|
||||
|
Reference in New Issue
Block a user