]> git.ipfire.org Git - thirdparty/cups.git/blame - scheduler/subscriptions.h
Load cups into easysw/current.
[thirdparty/cups.git] / scheduler / subscriptions.h
CommitLineData
ef416fc2 1/*
e00b005a 2 * "$Id: subscriptions.h 5025 2006-01-30 03:49:12Z mike $"
ef416fc2 3 *
4 * Subscription definitions for the Common UNIX Printing System (CUPS) scheduler.
5 *
fa73b229 6 * Copyright 1997-2006 by Easy Software Products, all rights reserved.
ef416fc2 7 *
8 * These coded instructions, statements, and computer programs are the
9 * property of Easy Software Products and are protected by Federal
10 * copyright law. Distribution and use rights are outlined in the file
11 * "LICENSE.txt" which should have been included with this file. If this
12 * file is missing or damaged please contact Easy Software Products
13 * at:
14 *
15 * Attn: CUPS Licensing Information
16 * Easy Software Products
17 * 44141 Airport View Drive, Suite 204
18 * Hollywood, Maryland 20636 USA
19 *
20 * Voice: (301) 373-9600
21 * EMail: cups-info@cups.org
22 * WWW: http://www.cups.org
23 */
24
25/*
26 * Event mask enumeration...
27 */
28
29typedef enum
30{
31 /* Individual printer events... */
32 CUPSD_EVENT_PRINTER_RESTARTED = 0x0001,
33 /* Sent after printer restarted */
34 CUPSD_EVENT_PRINTER_SHUTDOWN = 0x0002,/* Sent after printer shutdown */
35 CUPSD_EVENT_PRINTER_STOPPED = 0x0004, /* Sent after printer stopped */
36 CUPSD_EVENT_PRINTER_FINISHINGS_CHANGED = 0x0008,
37 /* Sent after finishings-supported changed */
38 CUPSD_EVENT_PRINTER_MEDIA_CHANGED = 0x0010,
39 /* Sent after media-supported changed */
40 CUPSD_EVENT_PRINTER_ADDED = 0x0020, /* Sent after printer added */
41 CUPSD_EVENT_PRINTER_DELETED = 0x0040, /* Sent after printer deleted */
42 CUPSD_EVENT_PRINTER_MODIFIED = 0x0080,/* Sent after printer modified */
43
44 /* Convenience printer event groupings... */
45 CUPSD_EVENT_PRINTER_STATE_CHANGED = 0x0007,
46 /* RESTARTED + SHUTDOWN + STOPPED */
47 CUPSD_EVENT_PRINTER_CONFIG_CHANGED = 0x0018,
48 /* FINISHINGS_CHANGED + MEDIA_CHANGED */
49 CUPSD_EVENT_PRINTER_CHANGED = 0x00ff, /* All of the above */
50
51 /* Individual job events... */
e00b005a 52 CUPSD_EVENT_JOB_STATE = 0x0100, /* Any state change */
53 CUPSD_EVENT_JOB_CREATED = 0x0200, /* Send after job is created */
54 CUPSD_EVENT_JOB_COMPLETED = 0x0400, /* Sent after job is completed */
55 CUPSD_EVENT_JOB_STOPPED = 0x0800, /* Sent after job is stopped */
56 CUPSD_EVENT_JOB_CONFIG_CHANGED = 0x1000,
ef416fc2 57 /* Sent after set-job-attributes */
e00b005a 58 CUPSD_EVENT_JOB_PROGRESS = 0x2000, /* Sent for each page */
ef416fc2 59
60 /* Convenience job event grouping... */
e00b005a 61 CUPSD_EVENT_JOB_STATE_CHANGED = 0x0f00,
62 /* Any state change + CREATED + COMPLETED + STOPPED */
ef416fc2 63
64 /* Server events... */
e00b005a 65 CUPSD_EVENT_SERVER_RESTARTED = 0x4000,/* Sent after server restarts */
66 CUPSD_EVENT_SERVER_STARTED = 0x8000, /* Sent when server first starts */
67 CUPSD_EVENT_SERVER_STOPPED = 0x10000, /* Sent when server is stopped */
68 CUPSD_EVENT_SERVER_AUDIT = 0x20000, /* Security-related stuff */
ef416fc2 69
70 /* Everything and nothing... */
71 CUPSD_EVENT_NONE = 0, /* Nothing */
72 CUPSD_EVENT_ALL = 0x1ffff /* Everything */
73} cupsd_eventmask_t;
74
75
76/*
77 * Notiification support structures...
78 */
79
80typedef struct cupsd_event_s /**** Event structure ****/
81{
82 cupsd_eventmask_t event; /* Event */
83 time_t time; /* Time of event */
84 ipp_t *attrs; /* Notification message */
85 cupsd_printer_t *dest; /* Associated printer, if any */
86 cupsd_job_t *job; /* Associated job, if any */
87} cupsd_event_t;
88
89typedef struct cupsd_subscription_s /**** Subscription structure ****/
90{
91 int id; /* subscription-id */
92 unsigned mask; /* Event mask */
93 char *owner; /* notify-subscriber-user-name */
94 char *recipient; /* notify-recipient-uri, if applicable */
95 unsigned char user_data[64]; /* notify-user-data */
96 int user_data_len; /* Length of notify-user-data */
97 int lease; /* notify-lease-duration */
98 int interval; /* notify-time-interval */
99 cupsd_printer_t *dest; /* notify-printer-uri, if any */
100 cupsd_job_t *job; /* notify-job-id, if any */
101 int pid; /* Process ID of notifier */
102 int pipe; /* Pipe to notifier */
103 int status; /* Exit status of notifier */
104 time_t last; /* Time of last notification */
105 time_t expire; /* Lease expiration time */
106 int first_event_id, /* First event-id in cache */
107 next_event_id, /* Next event-id to use */
108 num_events; /* Number of cached events */
109 cupsd_event_t **events; /* Cached events */
110} cupsd_subscription_t;
111
112
113/*
114 * Globals...
115 */
116
117VAR int MaxSubscriptions VALUE(100),
118 /* Overall subscription limit */
119 MaxSubscriptionsPerJob VALUE(0),
120 /* Per-job subscription limit */
121 MaxSubscriptionsPerPrinter VALUE(0),
122 /* Per-printer subscription limit */
123 MaxSubscriptionsPerUser VALUE(0),
124 /* Per-user subscription limit */
125 NextSubscriptionId VALUE(1),
126 /* Next subscription ID */
127 DefaultLeaseDuration VALUE(86400),
128 /* Default notify-lease-duration */
129 MaxLeaseDuration VALUE(0);
130 /* Maximum notify-lease-duration */
131VAR cups_array_t *Subscriptions VALUE(NULL);
132 /* Active subscriptions */
133
134VAR int MaxEvents VALUE(100), /* Maximum number of events */
135 NumEvents VALUE(0); /* Number of active events */
136VAR cupsd_event_t **Events VALUE(NULL); /* Active events */
137
fa73b229 138VAR unsigned LastEvent VALUE(0); /* Last events processed */
139VAR time_t LastEventTime VALUE(0); /* Time that the last events were sent */
140
ef416fc2 141VAR int NotifierPipes[2] VALUE2(-1, -1);
142 /* Pipes for notifier error/debug output */
143VAR cupsd_statbuf_t *NotifierStatusBuffer VALUE(NULL);
144 /* Status buffer for pipes */
145
146
147/*
148 * Prototypes...
149 */
150
151extern void cupsdAddEvent(cupsd_eventmask_t event, cupsd_printer_t *dest,
152 cupsd_job_t *job, const char *text, ...);
153extern cupsd_subscription_t *
154 cupsdAddSubscription(unsigned mask, cupsd_printer_t *dest,
155 cupsd_job_t *job, const char *uri,
156 int sub_id);
157extern void cupsdDeleteAllEvents(void);
158extern void cupsdDeleteAllSubscriptions(void);
159extern void cupsdDeleteSubscription(cupsd_subscription_t *sub, int update);
160extern const char *
161 cupsdEventName(cupsd_eventmask_t event);
162extern cupsd_eventmask_t
163 cupsdEventValue(const char *name);
164
165extern cupsd_subscription_t *
166 cupsdFindSubscription(int id);
167extern void cupsdExpireSubscriptions(cupsd_printer_t *dest,
168 cupsd_job_t *job);
169extern void cupsdLoadAllSubscriptions(void);
170extern void cupsdSaveAllSubscriptions(void);
171extern void cupsdSendNotification(cupsd_subscription_t *sub,
172 cupsd_event_t *event);
173extern void cupsdStopAllNotifiers(void);
174extern void cupsdUpdateNotifierStatus(void);
175
176
177/*
e00b005a 178 * End of "$Id: subscriptions.h 5025 2006-01-30 03:49:12Z mike $".
ef416fc2 179 */