diff --git a/HISTORY b/HISTORY index 075ff5b..0376c69 100644 --- a/HISTORY +++ b/HISTORY @@ -1,5 +1,5 @@ -Version 1.24 2016-01-14 +Version 1.24 2016-01-19 * php extension compiled on PHP 7 * add skiplist which support stable sort * make.sh: use sed to replace perl diff --git a/src/fast_task_queue.c b/src/fast_task_queue.c index 5f9483a..d5827fa 100644 --- a/src/fast_task_queue.c +++ b/src/fast_task_queue.c @@ -629,41 +629,45 @@ int task_queue_count(struct fast_task_queue *pQueue) return count; } -static int _get_new_buffer_size(struct fast_task_queue *pQueue, - const int expect_size, int *new_size) +int task_queue_get_new_buffer_size(const int min_buff_size, + const int max_buff_size, const int expect_size, int *new_size) { - if (pQueue->min_buff_size == pQueue->max_buff_size) + if (min_buff_size == max_buff_size) { logError("file: "__FILE__", line: %d, " "can't change buffer size because NOT supported", __LINE__); return EOPNOTSUPP; } - if (expect_size > pQueue->max_buff_size) + if (expect_size > max_buff_size) { logError("file: "__FILE__", line: %d, " "can't change buffer size because expect buffer size: %d " "exceeds max buffer size: %d", __LINE__, expect_size, - pQueue->max_buff_size); + max_buff_size); return EOVERFLOW; } - *new_size = pQueue->min_buff_size; - if (expect_size > pQueue->min_buff_size) + *new_size = min_buff_size; + if (expect_size > min_buff_size) { while (*new_size < expect_size) { *new_size *= 2; } - if (*new_size > pQueue->max_buff_size) + if (*new_size > max_buff_size) { - *new_size = pQueue->max_buff_size; + *new_size = max_buff_size; } } return 0; } +#define _get_new_buffer_size(pQueue, expect_size, new_size) \ + task_queue_get_new_buffer_size(pQueue->min_buff_size, \ + pQueue->max_buff_size, expect_size, new_size) + int task_queue_set_buffer_size(struct fast_task_queue *pQueue, struct fast_task_info *pTask, const int expect_size) { diff --git a/src/fast_task_queue.h b/src/fast_task_queue.h index 8d29d76..4720e49 100644 --- a/src/fast_task_queue.h +++ b/src/fast_task_queue.h @@ -106,6 +106,9 @@ int task_queue_set_buffer_size(struct fast_task_queue *pQueue, int task_queue_realloc_buffer(struct fast_task_queue *pQueue, struct fast_task_info *pTask, const int expect_size); +int task_queue_get_new_buffer_size(const int min_buff_size, + const int max_buff_size, const int expect_size, int *new_size); + #ifdef __cplusplus } #endif