MCPcopy Create free account
hub / github.com/OpenPrinting/cups / cupsdAddSubscription

Function cupsdAddSubscription

scheduler/subscriptions.c:260–408  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

258 */
259
260cupsd_subscription_t * /* O - New subscription object */
261cupsdAddSubscription(
262 unsigned mask, /* I - Event mask */
263 cupsd_printer_t *dest, /* I - Printer, if any */
264 cupsd_job_t *job, /* I - Job, if any */
265 const char *uri, /* I - notify-recipient-uri, if any */
266 int sub_id) /* I - notify-subscription-id or 0 */
267{
268 cupsd_subscription_t *temp; /* New subscription object */
269
270
271 cupsdLogMessage(CUPSD_LOG_DEBUG,
272 "cupsdAddSubscription(mask=%x, dest=%p(%s), job=%p(%d), "
273 "uri=\"%s\")",
274 mask, (void *)dest, dest ? dest->name : "", (void *)job, job ? job->id : 0,
275 uri ? uri : "(null)");
276
277 _cupsRWLockWrite(&SubscriptionsLock);
278
279 if (!Subscriptions)
280 Subscriptions = cupsArrayNew((cups_array_func_t)cupsd_compare_subscriptions,
281 NULL);
282
283 if (!Subscriptions)
284 {
285 cupsdLogMessage(CUPSD_LOG_CRIT,
286 "Unable to allocate memory for subscriptions - %s",
287 strerror(errno));
288 _cupsRWUnlock(&SubscriptionsLock);
289 return (NULL);
290 }
291
292 /*
293 * Limit the number of subscriptions...
294 */
295
296 if (MaxSubscriptions > 0 && cupsArrayCount(Subscriptions) >= MaxSubscriptions)
297 {
298 cupsdLogMessage(CUPSD_LOG_DEBUG,
299 "cupsdAddSubscription: Reached MaxSubscriptions %d "
300 "(count=%d)", MaxSubscriptions,
301 cupsArrayCount(Subscriptions));
302 _cupsRWUnlock(&SubscriptionsLock);
303 return (NULL);
304 }
305
306 if (MaxSubscriptionsPerJob > 0 && job)
307 {
308 int count; /* Number of job subscriptions */
309
310 for (temp = (cupsd_subscription_t *)cupsArrayFirst(Subscriptions),
311 count = 0;
312 temp;
313 temp = (cupsd_subscription_t *)cupsArrayNext(Subscriptions))
314 if (temp->job == job)
315 count ++;
316
317 if (count >= MaxSubscriptionsPerJob)

Callers 3

add_job_subscriptionsFunction · 0.85
create_subscriptionsFunction · 0.85

Calls 11

cupsdLogMessageFunction · 0.85
_cupsRWLockWriteFunction · 0.85
cupsArrayNewFunction · 0.85
_cupsRWUnlockFunction · 0.85
cupsArrayCountFunction · 0.85
cupsArrayFirstFunction · 0.85
cupsArrayNextFunction · 0.85
_cupsRWInitFunction · 0.85
cupsdSetStringFunction · 0.85
cupsArrayAddFunction · 0.85
cupsd_start_notifierFunction · 0.85

Tested by

no test coverage detected