struct fast_task_queue support release callback
parent
a1914ea249
commit
eafe769759
|
|
@ -127,6 +127,7 @@ int free_queue_init_ex2(struct fast_task_queue *queue, const char *name,
|
|||
queue->padding_size = aligned_padding_size;
|
||||
queue->arg_size = aligned_arg_size;
|
||||
queue->init_callback = init_callback;
|
||||
queue->release_callback = NULL;
|
||||
|
||||
/*
|
||||
logInfo("file: "__FILE__", line: %d, [%s] double_buffers: %d, "
|
||||
|
|
@ -172,6 +173,10 @@ static int _realloc_buffer(struct fast_net_buffer *buffer,
|
|||
|
||||
void free_queue_push(struct fast_task_info *task)
|
||||
{
|
||||
if (task->free_queue->release_callback != NULL) {
|
||||
task->free_queue->release_callback(task);
|
||||
}
|
||||
|
||||
*(task->client_ip) = '\0';
|
||||
task->send.ptr->length = 0;
|
||||
task->send.ptr->offset = 0;
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ typedef int (*ThreadLoopCallback) (struct nio_thread_data *pThreadData);
|
|||
typedef int (*TaskFinishCallback) (struct fast_task_info *task);
|
||||
typedef void (*TaskCleanUpCallback) (struct fast_task_info *task);
|
||||
typedef int (*TaskInitCallback)(struct fast_task_info *task);
|
||||
typedef void (*TaskReleaseCallback)(struct fast_task_info *task);
|
||||
|
||||
typedef void (*IOEventCallback) (int sock, short event, void *arg);
|
||||
typedef int (*TaskContinueCallback)(struct fast_task_info *task);
|
||||
|
|
@ -155,6 +156,7 @@ struct fast_task_queue
|
|||
bool double_buffers; //if send buffer and recv buffer are independent
|
||||
struct fast_mblock_man allocator;
|
||||
TaskInitCallback init_callback;
|
||||
TaskReleaseCallback release_callback;
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
@ -179,6 +181,13 @@ static inline int free_queue_init_ex(struct fast_task_queue *queue,
|
|||
arg_size, NULL);
|
||||
}
|
||||
|
||||
static inline void free_queue_set_release_callback(
|
||||
struct fast_task_queue *queue,
|
||||
TaskReleaseCallback callback)
|
||||
{
|
||||
queue->release_callback = callback;
|
||||
}
|
||||
|
||||
void free_queue_destroy(struct fast_task_queue *queue);
|
||||
|
||||
static inline struct fast_task_info *free_queue_pop(
|
||||
|
|
|
|||
Loading…
Reference in New Issue