CAPS Universe documentation  1.0.4
All you need to know to be successful
libcapsprovider-local.h
Go to the documentation of this file.
1#pragma once
2
3/*
4 * SPDX-License-Identifier: LGPL-2.1-or-later
5 *
6 * (c) 2018 Jürgen Borleis <projects@caps-printing.org>
7 *
8 * This library is free software; you can redistribute it and/or modify it under
9 * the terms of the GNU Lesser General Public License 2.1 as published by the Free
10 * Software Foundation.
11 *
12 * This library is distributed in the hope that it will be useful, but WITHOUT
13 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
15 * details.
16 */
17#include <stdbool.h>
18
19#include <libcapsbase.h>
20#include <libcapsinif.h>
21#include <libcapsppd-api.h>
22
23#include "libcapsprovider.h"
24#include "list.h"
25
39#define CAPS_DRIVER_INI_NAME "driver-ini"
43#define CAPS_DRIVER_INI_NAME_SHORT 'f'
49#define CAPS_PARAM_DIRECTORY_NAME "parameter-dir"
53#define CAPS_PARAM_DIRECTORY_NAME_SHORT 'd'
59};
60
63
65struct coord_comm {
68 void *data;
69};
70
72struct nls_domain {
73 const char *domain;
74 /* management members */
75 LIST_FIELDS(struct nls_domain, list);
76};
77
86 /* persistent info for the run */
90 /* dynamic printer driver/provider information */
93 LIST_HEAD(struct nls_domain, nls_domain_list);
94 int ppd_fd;
98 const char *driver_ini;
99 const char *param_dir;
100};
110 int fh;
112};
123int coord_connection_create(struct coord_comm *instance, const struct caps_pp_notifier *notifier, void *data) __nonnull((1));
128void coord_connection_destroy(struct coord_comm *instance) __nonnull();
171int coord_printer_info_setup(struct coord_comm *instance, caps_identifier pr_id, const char *name, const char *info, const char *location, const char *vendor, const char *model, struct caps_supported_mime_list *mime_list) __nonnull();
188int coord_printer_ppd_setup(struct coord_comm *instance, caps_identifier pr_id, int fd) __nonnull();
210int coord_printer_state_setup(struct coord_comm *instance, caps_identifier pr_id, enum caps_printing_provider_state state_id, enum caps_printing_provider_reason reason_id, const char *state_message) __nonnull();
245int coord_job_data_get(struct coord_comm *instance, caps_identifier pr_id, caps_identifier job_id, int *job_fh, char **job_params) __nonnull() __warn_unused_res;
297int coord_job_state_set(struct coord_comm *instance, caps_identifier pr_id, caps_identifier job_id, enum caps_printing_job_state state_id, enum caps_printing_job_reason state_reason_id, const char *state_message) __nonnull();
303int coord_notifiers_process(struct coord_comm *instance) __nonnull();
304
306{
307 if (pr_id < 1)
308 caps_developers_failure_report("'pr_id' parameter invalid");
309 if (instance->pr_id < 1) /* paranoia */
310 caps_developers_failure_report("internal 'printing id' invalid");
311 return instance->pr_id == pr_id;
312}
313
314const char *state_message_translate(struct caps_pp_handle *instance, const char *string) __returns_nonnull __nonnull();
static struct caps_coordinator data
Definition: caps-printing-coordinator.c:83
static caps_identifier pr_id
Definition: caps-printing-test-client.c:37
static const struct caps_supported_mime_list mime_list
Definition: caps-printing-test-provider.c:402
#define __warn_unused_res
Definition: libcapsbase.h:146
#define __returns_nonnull
Definition: libcapsbase.h:141
#define __nonnull(params)
Definition: libcapsbase.h:84
#define __pure
Definition: libcapsbase.h:124
int64_t caps_identifier
Definition: libcapsbase.h:323
caps_printing_job_state
The processing states a job can be in.
Definition: libcapsppcommon.h:254
caps_printing_job_reason
The more detailed state description a printing job can be in.
Definition: libcapsppcommon.h:268
caps_printing_provider_reason
Definition: libcapsppcommon.h:156
caps_printing_provider_state
Definition: libcapsppcommon.h:138
#define caps_developers_failure_report(fmt)
Definition: libcapsbase.h:522
Basic API for everything else of the CAPS universe.
Basic API for INI file management in the CAPS universe.
API declaration to read-in external PPD files and handle PPD file creation on-the-fly.
int coord_job_data_get(struct coord_comm *instance, caps_identifier pr_id, caps_identifier job_id, int *job_fh, char **job_params)
Definition: comm-coordinator.c:355
int coord_connection_create(struct coord_comm *instance, const struct caps_pp_notifier *notifier, void *data)
Definition: comm-coordinator.c:645
struct DBusConnection DBusConnection
Definition: libcapsprovider-local.h:62
int coord_notifiers_process(struct coord_comm *instance)
Definition: comm-coordinator.c:719
int coord_job_state_set(struct coord_comm *instance, caps_identifier pr_id, caps_identifier job_id, enum caps_printing_job_state state_id, enum caps_printing_job_reason state_reason_id, const char *state_message)
Definition: comm-coordinator.c:455
void coord_connection_destroy(struct coord_comm *instance)
Definition: comm-coordinator.c:705
int coord_printer_id_create(struct coord_comm *instance, caps_identifier *pr_id)
Definition: comm-coordinator.c:76
static bool caps_pp_check_printing_id(struct caps_pp_handle *instance, caps_identifier pr_id)
Definition: libcapsprovider-local.h:305
int coord_printer_ppd_setup(struct coord_comm *instance, caps_identifier pr_id, int fd)
Definition: comm-coordinator.c:232
int coord_printer_state_setup(struct coord_comm *instance, caps_identifier pr_id, enum caps_printing_provider_state state_id, enum caps_printing_provider_reason reason_id, const char *state_message)
Definition: comm-coordinator.c:263
void coord_printer_id_free(struct coord_comm *instance, caps_identifier pr_id)
Definition: comm-coordinator.c:157
int coord_job_mark_finished(struct coord_comm *instance, caps_identifier pr_id, caps_identifier job_id)
Definition: comm-coordinator.c:426
int coord_printer_info_setup(struct coord_comm *instance, caps_identifier pr_id, const char *name, const char *info, const char *location, const char *vendor, const char *model, struct caps_supported_mime_list *mime_list)
Definition: comm-coordinator.c:185
int coord_job_progress_report(struct coord_comm *instance, caps_identifier pr_id, caps_identifier job_id, const struct caps_job_progression *prog)
Definition: comm-coordinator.c:492
int coord_job_id_get_next_available(struct coord_comm *instance, caps_identifier pr_id, caps_identifier *job_id)
Definition: comm-coordinator.c:300
const char * state_message_translate(struct caps_pp_handle *instance, const char *string)
Definition: libcapsprovider.c:187
Printing provisioning for printing providers/printer drivers.
Double linked list implementation in a single header file.
Manage a table of INI entries.
Definition: libcapsinif.h:256
Information collection for printing progression report.
Definition: libcapsppcommon.h:308
Definition: libcapsprovider-local.h:107
caps_identifier id
Definition: libcapsprovider-local.h:109
char * parameters
Definition: libcapsprovider-local.h:111
int fh
Definition: libcapsprovider-local.h:110
struct caps_pp_handle * instance
Definition: libcapsprovider-local.h:108
Definition: libcapsprovider-local.h:82
struct caps_supported_mime_list supported_formats
Definition: libcapsprovider-local.h:88
LIST_HEAD(struct nls_domain, nls_domain_list)
struct caps_inif_table runtime_config
Definition: libcapsprovider-local.h:87
int ppd_fd
Definition: libcapsprovider-local.h:94
struct coord_comm coord_connection
Definition: libcapsprovider-local.h:83
const char * param_dir
Definition: libcapsprovider-local.h:99
caps_identifier job_id_next
Definition: libcapsprovider-local.h:96
const char * driver_ini
Definition: libcapsprovider-local.h:98
const struct caps_ppd_base * printer_base_info
Definition: libcapsprovider-local.h:91
caps_identifier pr_id
Definition: libcapsprovider-local.h:84
struct caps_ppd_options_table * ppd_options
Definition: libcapsprovider-local.h:92
Definition: libcapsprovider-local.h:57
int(* job_change)(void *data, caps_identifier pr_id, caps_identifier job_id)
Definition: libcapsprovider-local.h:58
Basic description of common features a printing device/printing driver can provide.
Definition: libcapsppd.h:322
Manage the content of a PPD file.
Definition: libcapsppd-local.h:70
Definition: libcapsppcommon.h:166
Definition: libcapsprovider-local.h:65
void * data
Definition: libcapsprovider-local.h:68
DBusConnection * conn
Definition: libcapsprovider-local.h:66
const struct caps_pp_notifier * notifier
Definition: libcapsprovider-local.h:67
Definition: libcapsprovider-local.h:72
const char * domain
Definition: libcapsprovider-local.h:73
LIST_FIELDS(struct nls_domain, list)