#include <aerospike/as_std.h>
#include <citrusleaf/cf_queue.h>
Go to the source code of this file.
|
void | as_buffer_pool_destroy (as_buffer_pool *pool) |
|
int | as_buffer_pool_drop_buffers (as_buffer_pool *pool, int buffer_count) |
|
int | as_buffer_pool_init (as_buffer_pool *pool, uint32_t header_size, uint32_t buffer_size) |
|
int | as_buffer_pool_pop (as_buffer_pool *pool, uint32_t size, as_buffer_result *buffer) |
|
int | as_buffer_pool_push (as_buffer_pool *pool, void *buffer, uint32_t capacity) |
|
int | as_buffer_pool_push_limit (as_buffer_pool *pool, void *buffer, uint32_t capacity, uint32_t max_buffers) |
|
Empty buffer pool and destroy.
- Parameters
-
int as_buffer_pool_drop_buffers |
( |
as_buffer_pool * |
pool, |
|
|
int |
buffer_count |
|
) |
| |
|
private |
Delete buffer_count buffers from the buffer pool. This is useful when a large number of buffers are created due to a burst of concurrent buffer usage and pruning is desired.
- Parameters
-
pool | Buffer pool. |
buffer_count | Number of buffers to delete. |
Returns number of buffers deleted.
int as_buffer_pool_init |
( |
as_buffer_pool * |
pool, |
|
|
uint32_t |
header_size, |
|
|
uint32_t |
buffer_size |
|
) |
| |
|
private |
Initialize empty buffer pool. Each buffer in the pool will be a fixed size.
- Parameters
-
pool | Buffer pool. |
header_size | Size of buffer header. |
buffer_size | Fixed buffer size. |
Returns: 0 : Success -1 : Failed to create queue.
If requested buffer size is less than/equal the pool's buffer size, pop buffer from pool. Otherwise allocate memory on heap. If the pool is empty, also create buffer on heap.
- Parameters
-
pool | Buffer pool. |
size | Requested size of buffer. |
buffer | Buffer to be populated. |
Returns: 0 : Found in pool. 1 : Pool empty. Allocated new buffer. 2 : Size greater than capacity. Allocated new large buffer. -1 : Memory allocation error. -2 : Queue failure.
int as_buffer_pool_push |
( |
as_buffer_pool * |
pool, |
|
|
void * |
buffer, |
|
|
uint32_t |
capacity |
|
) |
| |
|
private |
If buffer capacity less than/equal the pool's buffer size, push buffer back into pool. Otherwise, free memory and do not put back into pool.
- Parameters
-
pool | Buffer pool. |
buffer | Buffer. |
capacity | Capacity of buffer. |
Returns: 0 : Success -1 : Queue failure. -2 : Detected large buffer of different size. Buffer was destroyed.
int as_buffer_pool_push_limit |
( |
as_buffer_pool * |
pool, |
|
|
void * |
buffer, |
|
|
uint32_t |
capacity, |
|
|
uint32_t |
max_buffers |
|
) |
| |
|
private |
If buffer capacity less than/equal the pool's buffer size and the number of unused buffers is less than/equal than max_buffers, push buffer back into pool. Otherwise, free memory and do not put back into pool.
- Parameters
-
pool | Buffer pool. |
buffer | Buffer. |
capacity | Capacity of buffer. |
max_buffers | Maximum number of unused buffers allowed in pool. |
Returns: 0 : Success -1 : Too many buffers exist in pool. Buffer was destroyed. -2 : Detected large buffer of different size. Buffer was destroyed.