+
+int async_pipe(int *pipefds)
+{
+ if (pipe(pipefds) == 0)
+ return 1;
+
+ return 0;
+}
+
+int async_write1(int fd, const void *buf)
+{
+ if (write(fd, buf, 1) > 0)
+ return 1;
+
+ return 0;
+}
+
+int async_read1(int fd, void *buf)
+{
+ if (read(fd, buf, 1) > 0)
+ return 1;
+
+ return 0;
+}
+
+STACK_OF(ASYNC_JOB) *async_get_pool(void)
+{
+ return posixpool;
+}
+
+int async_set_pool(STACK_OF(ASYNC_JOB) *poolin, size_t curr_size,
+ size_t max_size)
+{
+ posixpool = poolin;
+ posixpool_curr_size = curr_size;
+ posixpool_max_size = max_size;
+ return 1;
+}
+
+void async_increment_pool_size(void)
+{
+ posixpool_curr_size++;
+}
+
+void async_release_job_to_pool(ASYNC_JOB *job)
+{
+ sk_ASYNC_JOB_push(posixpool, job);
+}
+
+size_t async_pool_max_size(void)
+{
+ return posixpool_max_size;
+}
+
+void async_release_pool(void)
+{
+ sk_ASYNC_JOB_free(posixpool);
+ posixpool = NULL;
+}
+
+int async_pool_can_grow(void)
+{
+ return (posixpool_max_size == 0)
+ || (posixpool_curr_size < posixpool_max_size);
+}
+