Revert "pthreadpool: add pthreadpool_tevent_[current_job_]per_thread_cwd()"
[samba.git] / lib / pthreadpool / pthreadpool_tevent.h
1 /*
2  * Unix SMB/CIFS implementation.
3  * threadpool implementation based on pthreads
4  * Copyright (C) Volker Lendecke 2016
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
18  */
19
20 #ifndef __PTHREADPOOL_TEVENT_H__
21 #define __PTHREADPOOL_TEVENT_H__
22
23 #include <tevent.h>
24
25 void pthreadpool_tevent_cleanup_orphaned_jobs(void);
26
27 struct pthreadpool_tevent;
28
29 int pthreadpool_tevent_init(TALLOC_CTX *mem_ctx, unsigned max_threads,
30                             struct pthreadpool_tevent **presult);
31
32 size_t pthreadpool_tevent_max_threads(struct pthreadpool_tevent *pool);
33 size_t pthreadpool_tevent_queued_jobs(struct pthreadpool_tevent *pool);
34
35 /*
36  * return true - if tevent_req_cancel() was called.
37  */
38 bool pthreadpool_tevent_current_job_canceled(void);
39 /*
40  * return true - if talloc_free() was called on the job request,
41  * tevent_context or pthreadpool_tevent.
42  */
43 bool pthreadpool_tevent_current_job_orphaned(void);
44 /*
45  * return true if canceled and orphaned are both false.
46  */
47 bool pthreadpool_tevent_current_job_continue(void);
48
49 struct tevent_req *pthreadpool_tevent_job_send(
50         TALLOC_CTX *mem_ctx, struct tevent_context *ev,
51         struct pthreadpool_tevent *pool,
52         void (*fn)(void *private_data), void *private_data);
53
54 int pthreadpool_tevent_job_recv(struct tevent_req *req);
55
56 #endif