Commit 1af59af3 1af59af343b02f6bbea4c8c3d557e5d7ca677f06 by Alain Magloire

monitors provide a way of locking.

1 parent 18406256
...@@ -64,9 +64,9 @@ extern int mailbox_size __P ((mailbox_t, off_t *size)); ...@@ -64,9 +64,9 @@ extern int mailbox_size __P ((mailbox_t, off_t *size));
64 extern int mailbox_is_updated __P ((mailbox_t)); 64 extern int mailbox_is_updated __P ((mailbox_t));
65 extern int mailbox_scan __P ((mailbox_t, size_t no, size_t *count)); 65 extern int mailbox_scan __P ((mailbox_t, size_t no, size_t *count));
66 66
67 /* Stream settings. */ 67 /* Mailbox Stream. */
68 extern int mailbox_get_stream __P ((mailbox_t, stream_t *));
69 extern int mailbox_set_stream __P ((mailbox_t, stream_t)); 68 extern int mailbox_set_stream __P ((mailbox_t, stream_t));
69 extern int mailbox_get_stream __P ((mailbox_t, stream_t *));
70 70
71 /* Lock settings. */ 71 /* Lock settings. */
72 extern int mailbox_get_locker __P ((mailbox_t, locker_t *)); 72 extern int mailbox_get_locker __P ((mailbox_t, locker_t *));
......
1 /* GNU mailutils - a suite of utilities for electronic mail
2 Copyright (C) 1999, 2000 Free Software Foundation, Inc.
3
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Library Public License as published by
6 the Free Software Foundation; either version 2, or (at your option)
7 any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU Library General Public License for more details.
13
14 You should have received a copy of the GNU Library General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
17
18 #ifndef _MAILUTILS_MONITOR_H
19 #define _MAILUTILS_MONITOR_H
20
21 #include <sys/types.h>
22
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26
27 #ifndef __P
28 # ifdef __STDC__
29 # define __P(args) args
30 # else
31 # define __P(args) ()
32 # endif
33 #endif /*__P */
34
35 struct _monitor;
36 typedef struct _monitor *monitor_t;
37
38 extern int monitor_create __P ((monitor_t *, void *owner));
39 extern void monitor_destroy __P ((monitor_t *, void *owner));
40 extern void *monitor_get_owner __P ((monitor_t));
41
42 extern int monitor_rdlock __P ((monitor_t));
43 extern int monitor_wrlock __P ((monitor_t));
44 extern int monitor_unlock __P ((monitor_t));
45 extern int monitor_wait __P ((monitor_t));
46 extern int monitor_notify __P ((monitor_t));
47
48 #ifdef __cplusplus
49 }
50 #endif
51
52 #endif /* _MAILUTILS_MONITOR_H */
...@@ -38,12 +38,13 @@ typedef struct _observer* observer_t; ...@@ -38,12 +38,13 @@ typedef struct _observer* observer_t;
38 typedef struct _observable* observable_t; 38 typedef struct _observable* observable_t;
39 39
40 #define MU_EVT_MAILBOX_DESTROY 0x001 40 #define MU_EVT_MAILBOX_DESTROY 0x001
41 #define MU_EVT_FOLDER_DESTROY 0x001 41 #define MU_EVT_FOLDER_DESTROY 0x002
42 #define MU_EVT_MAILER_DESTROY 0x002 42 #define MU_EVT_MAILER_DESTROY 0x004
43 #define MU_EVT_MESSAGE_DESTROY 0x004 43 #define MU_EVT_MESSAGE_DESTROY 0x008
44 #define MU_EVT_MESSAGE_ADD 0x008 44 #define MU_EVT_MESSAGE_ADD 0x010
45 #define MU_EVT_MAILBOX_PROGRESS 0x010 45 #define MU_EVT_MAILBOX_PROGRESS 0x020
46 #define MU_EVT_AUTHORITY_FAILED 0x020 46 #define MU_EVT_AUTHORITY_FAILED 0x030
47 #define MU_EVT_MAILBOX_CORRUPT 0x040
47 48
48 #define MU_OBSERVER_NO_CHECK 1 49 #define MU_OBSERVER_NO_CHECK 1
49 50
......