Initial import of the CDE 2.1.30 sources from the Open Group.
[oweals/cde.git] / cde / programs / dtcm / server / reminder.h
1 /* $XConsortium: reminder.h /main/4 1995/11/09 12:48:37 rswiston $ */
2 /*
3  *  (c) Copyright 1993, 1994 Hewlett-Packard Company
4  *  (c) Copyright 1993, 1994 International Business Machines Corp.
5  *  (c) Copyright 1993, 1994 Novell, Inc.
6  *  (c) Copyright 1993, 1994 Sun Microsystems, Inc.
7  */
8
9 #ifndef _REMINDER_H
10 #define _REMINDER_H
11
12 #include "ansi_c.h"
13 #include "EUSCompat.h"
14 #include "cm.h"
15 #include "rtable4.h"
16 #include "list.h"
17
18 typedef struct _RemInfo {
19         boolean_t       isentry;        /* entry vs appt */
20         time_t          runtime;        /* run time of reminder */
21         time_t          starttime;
22         time_t          lasttick;       /* lasttick of a repeating event */
23         List_node       *lnode;
24         union {
25                 Appt_4          *a;
26                 cms_entry       *e;
27         } data;                         /* associated entry */
28         union {
29                 Attr_4          *a;     /* v4 reminder structure */
30                 int             i;      /* index of attribute name */
31         } rem;                          /* associated reminder info */
32         struct _RemInfo *next;          /* next reminder */
33 } _DtCmsRemInfo;
34
35 typedef struct _RemQueue {
36         time_t          cutoff;
37         uint            num_queues;
38         int             *aindex;        /* array of attribute index */
39         char            **names;        /* array of names */
40         _DtCmsRemInfo   **active;       /* array of unexpired reminders */
41         _DtCmsRemInfo   **oldhead;      /* head of old reminders list */
42 } _DtCmsRemQueue;
43
44 typedef struct reminder_q {
45         time_t  remind_at;
46         int     remind_ord;
47         Attr_4  attr;
48         Appt_4  *appt;
49         struct reminder_q *next;
50 } Rm_que;
51
52 extern void _DtCmsAddReminderV4 P((Rm_que **qhead, Rm_que *p_reminder));
53
54 extern Rm_que *_DtCmsRemoveReminderV4 P((
55                 Rm_que **qhead,
56                 Rm_que *p_prev,
57                 Rm_que *p_curr));
58
59 extern Rm_que *build_reminder P((
60                 time_t  current_time,
61                 Appt_4  *p_appt,
62                 Attr_4  p_attr,
63                 time_t  start_tick,
64                 u_int   start_ord));
65
66 extern Reminder_4 *_DtCmsGetReminderInfoV4 P((Rm_que *original));
67
68 extern void _DtCmsPrintReminderListV4 P((Rm_que *qhead));
69
70 extern void _DtCmsObsoleteReminderV4 P((
71                 Rm_que          **qhead,
72                 Appt_4          *p_appt,
73                 int             ord, 
74                 boolean_t       delforward));
75
76 extern void _DtCmsAddReminders4Entry P((
77                 _DtCmsRemQueue  **qhead,
78                 cms_entry       *entry,
79                 List_node       *lnode));
80
81 extern void _DtCmsObsoleteReminder4Entry P((
82                 _DtCmsRemQueue  *qhead,
83                 cms_entry       *entry,
84                 List_node       *lnode,
85                 time_t          starttime,
86                 boolean_t       delfwd));
87
88 extern CSA_return_code _DtCmsLookupReminder P((
89                         _DtCmsRemQueue          *remq,
90                         time_t                  tick,
91                         uint                    num_names,
92                         cms_attr_name           *names,
93                         cms_reminder_ref        **rems));
94
95 extern void _DtCmsFreeReminderRef P((cms_reminder_ref *rems));
96
97 extern void _DtCmsUpdateReminders(_DtCmsRemQueue *remq);
98
99 #endif