2005-08-01 [paul] 1.9.13cvs3
[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 <pthread.h>
6 #include <libetpan/libetpan.h>
7
8 struct etpan_thread_manager {
9   /* thread pool */
10   carray * thread_pool;
11   carray * thread_pending;
12   int can_create_thread;
13   
14   int unbound_count;
15   
16   int notify_fds[2];
17 };
18
19 struct etpan_thread {
20   struct etpan_thread_manager * manager;
21   
22   pthread_t th_id;
23   
24   pthread_mutex_t lock;
25   carray * op_list;
26   carray * op_done_list;
27   
28   int bound_count;
29   int terminate_state;
30   
31   struct mailsem * start_sem;
32   struct mailsem * stop_sem;
33   struct mailsem * op_sem;
34 };
35
36 struct etpan_thread_op {
37   struct etpan_thread * thread;
38   
39   void (* run)(struct etpan_thread_op * op);
40   
41   void (* callback)(int cancelled, void * result, void * callback_data);
42   void * callback_data;
43   
44   void (* cleanup)(struct etpan_thread_op * op);
45   
46   pthread_mutex_t lock;
47   int callback_called;
48   int cancellable;
49   int cancelled;
50   void * param;
51   void * result;
52 };
53
54 #endif