struct fast_task_queue support release callback

support_rdma
YuQing 2023-10-12 21:53:29 +08:00
parent a1914ea249
commit eafe769759
2 changed files with 14 additions and 0 deletions

View File

@ -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;

View File

@ -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(