2007-01-17 [paul] 2.7.1cvs13
[claws.git] / src / etpan / etpan-thread-manager-types.h
1 /*
2  * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
3  * Copyright (C) 2005-2007 DINH Viet Hoa and the Claws Mail team
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18  */
19
20 #ifndef ETPAN_THREAD_MANAGER_TYPES_H
21
22 #define ETPAN_THREAD_MANAGER_TYPES_H
23
24 #include <pthread.h>
25 #include <libetpan/libetpan.h>
26
27 struct etpan_thread_manager {
28   /* thread pool */
29   carray * thread_pool;
30   carray * thread_pending;
31   int can_create_thread;
32   
33   int unbound_count;
34   
35   int notify_fds[2];
36 };
37
38 struct etpan_thread {
39   struct etpan_thread_manager * manager;
40   
41   pthread_t th_id;
42   
43   pthread_mutex_t lock;
44   carray * op_list;
45   carray * op_done_list;
46   
47   int bound_count;
48   int terminate_state;
49   
50   struct mailsem * start_sem;
51   struct mailsem * stop_sem;
52   struct mailsem * op_sem;
53 };
54
55 struct etpan_thread_op {
56   struct etpan_thread * thread;
57   
58   void (* run)(struct etpan_thread_op * op);
59   
60   void (* callback)(int cancelled, void * result, void * callback_data);
61   void * callback_data;
62   
63   void (* cleanup)(struct etpan_thread_op * op);
64   
65   pthread_mutex_t lock;
66   int callback_called;
67   int cancellable;
68   int cancelled;
69   void * param;
70   void * result;
71 };
72
73 #endif