typedef void AIOCB(int fd, void *cbdata, const char *buf, int aio_return, int aio_errno);
-struct squidaio_result_t {
+class squidaio_result_t {
+public:
+ squidaio_result_t() : aio_return(0), aio_errno(0), result_type(_AIO_OP_NONE), _data(nullptr), data(nullptr) {}
int aio_return;
int aio_errno;
enum _squidaio_request_type result_type;
void *data; /* Available to the caller */
};
-struct squidaio_ctrl_t {
-
+class squidaio_ctrl_t {
+ MEMPROXY_CLASS(squidaio_ctrl_t);
+public:
+ squidaio_ctrl_t() : next(nullptr), fd(0), operation(0), done_handler(nullptr), done_handler_data(nullptr), len(0), bufp(0), free_func(nullptr) {}
struct squidaio_ctrl_t *next;
int fd;
int operation;
if (initialised)
return;
- squidaio_ctrl_pool = memPoolCreate("aio_ctrl", sizeof(squidaio_ctrl_t));
-
initialised = true;
/*
squidaio_shutdown();
- delete squidaio_ctrl_pool;
-
- squidaio_ctrl_pool = NULL;
-
initialised = false;
}
if (ctrlp->operation == _AIO_READ)
squidaio_xfree(ctrlp->bufp, ctrlp->len);
- squidaio_ctrl_pool->freeOne(ctrlp);
+ delete ctrlp;
}
return retval;
}
DiskThreadsIOStrategy::DiskThreadsIOStrategy() :
- initialised(false),
- squidaio_ctrl_pool(NULL)
+ initialised(false)
{}
void
assert(DiskThreadsIOStrategy::Instance.initialised);
++squidaio_counts.open_start;
- ctrlp = (squidaio_ctrl_t *)DiskThreadsIOStrategy::Instance.squidaio_ctrl_pool->alloc();
+ ctrlp = new squidaio_ctrl_t;
ctrlp->fd = -2;
ctrlp->done_handler = callback;
ctrlp->done_handler_data = cbdataReference(callback_data);
assert(DiskThreadsIOStrategy::Instance.initialised);
++squidaio_counts.close_start;
aioCancel(fd);
- ctrlp = (squidaio_ctrl_t *)DiskThreadsIOStrategy::Instance.squidaio_ctrl_pool->alloc();
+ ctrlp = new squidaio_ctrl_t;
ctrlp->fd = fd;
ctrlp->done_handler = NULL;
ctrlp->done_handler_data = NULL;
}
dlinkDelete(m, &used_list);
- DiskThreadsIOStrategy::Instance.squidaio_ctrl_pool->freeOne(ctrlp);
+ delete ctrlp;
}
}
assert(DiskThreadsIOStrategy::Instance.initialised);
++squidaio_counts.write_start;
- ctrlp = (squidaio_ctrl_t *)DiskThreadsIOStrategy::Instance.squidaio_ctrl_pool->alloc();
+ ctrlp = new squidaio_ctrl_t;
ctrlp->fd = fd;
ctrlp->done_handler = callback;
ctrlp->done_handler_data = cbdataReference(callback_data);
assert(DiskThreadsIOStrategy::Instance.initialised);
++squidaio_counts.read_start;
- ctrlp = (squidaio_ctrl_t *)DiskThreadsIOStrategy::Instance.squidaio_ctrl_pool->alloc();
+ ctrlp = new squidaio_ctrl_t;
ctrlp->fd = fd;
ctrlp->done_handler = callback;
ctrlp->done_handler_data = cbdataReference(callback_data);
assert(DiskThreadsIOStrategy::Instance.initialised);
++squidaio_counts.stat_start;
- ctrlp = (squidaio_ctrl_t *)DiskThreadsIOStrategy::Instance.squidaio_ctrl_pool->alloc();
+ ctrlp = new squidaio_ctrl_t;
ctrlp->fd = -2;
ctrlp->done_handler = callback;
ctrlp->done_handler_data = cbdataReference(callback_data);
squidaio_ctrl_t *ctrlp;
assert(DiskThreadsIOStrategy::Instance.initialised);
++squidaio_counts.unlink_start;
- ctrlp = (squidaio_ctrl_t *)DiskThreadsIOStrategy::Instance.squidaio_ctrl_pool->alloc();
+ ctrlp = new squidaio_ctrl_t;
ctrlp->fd = -2;
ctrlp->done_handler = callback;
ctrlp->done_handler_data = cbdataReference(callback_data);
int
aioQueueSize(void)
{
- return DiskThreadsIOStrategy::Instance.squidaio_ctrl_pool->inUseCount();
+ return squidaio_ctrl_t::UseCount();
}