merged gtk2_imap_c branch with HEAD
[claws.git] / src / etpan / etpan-thread-manager-types.h
1 #ifndef ETPAN_THREAD_MANAGER_TYPES_H
2
3 #define ETPAN_THREAD_MANAGER_TYPES_H
4
5 #include <libetpan/libetpan.h>
6
7 struct etpan_thread_manager {
8   /* thread pool */
9   carray * thread_pool;
10   carray * thread_pending;
11   int can_create_thread;
12   
13   int unbound_count;
14   
15   int notify_fds[2];
16 };
17
18 struct etpan_thread {
19   struct etpan_thread_manager * manager;
20   
21   pthread_t th_id;
22   
23   pthread_mutex_t lock;
24   carray * op_list;
25   carray * op_done_list;
26   
27   int bound_count;
28   int terminate_state;
29   
30   struct mailsem * start_sem;
31   struct mailsem * stop_sem;
32   struct mailsem * op_sem;
33 };
34
35 struct etpan_thread_op {
36   struct etpan_thread * thread;
37   
38   void (* run)(struct etpan_thread_op * op);
39   
40   void (* callback)(int cancelled, void * result, void * callback_data);
41   void * callback_data;
42   
43   void (* cleanup)(struct etpan_thread_op * op);
44   
45   pthread_mutex_t lock;
46   int callback_called;
47   int cancellable;
48   int cancelled;
49   void * param;
50   void * result;
51 };
52
53 #endif