Printing coordinator and printing provider/printing driver communication via DBUS.
More...
|
void | print_argument_failure (DBusMessage *message, const DBusError *error) |
|
static void | print_rpc_failure (DBusMessage *message, const DBusError *error) |
|
int | coord_printer_id_create (struct coord_comm *instance, caps_identifier *pr_id) |
|
static int | send_message_and_receive_int32 (struct coord_comm *instance, DBusMessage *message) |
|
void | coord_printer_id_free (struct coord_comm *instance, caps_identifier pr_id) |
|
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) |
|
int | coord_printer_ppd_setup (struct coord_comm *instance, caps_identifier pr_id, int fd) |
|
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) |
|
int | coord_job_id_get_next_available (struct coord_comm *instance, caps_identifier pr_id, caps_identifier *job_id) |
|
int | coord_job_data_get (struct coord_comm *instance, caps_identifier pr_id, caps_identifier job_id, int *job_fh, char **job_params) |
|
int | coord_job_mark_finished (struct coord_comm *instance, caps_identifier pr_id, caps_identifier job_id) |
|
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) |
|
int | coord_job_progress_report (struct coord_comm *instance, caps_identifier pr_id, caps_identifier job_id, const struct caps_job_progression *prog) |
|
static DBusHandlerResult | handle_job_change_notifier (DBusMessage *message, void *data) |
|
static DBusHandlerResult | provider_signal_dispatch (DBusConnection *connection, DBusMessage *message, void *data) |
|
static DBusBusType | dbus_bus_type_detect (void) |
|
int | coord_connection_create (struct coord_comm *instance, const struct caps_pp_notifier *notifier, void *data) |
|
void | coord_connection_destroy (struct coord_comm *instance) |
|
int | coord_notifiers_process (struct coord_comm *instance) |
|
- Copyright
- GNU Lesser General Public License 2.1
- Author
- Jürgen Borleis
- Warning
- Use as experimental
◆ print_argument_failure()
void print_argument_failure |
( |
DBusMessage * |
message, |
|
|
const DBusError * |
error |
|
) |
| |
Just print a unified error message when the RPC arguments are wrong
- Parameters
-
[in] | message | Just to get the method to show where it happens |
[in] | error | The error message to print |
- Precondition
message
must still be valid
◆ print_rpc_failure()
static void print_rpc_failure |
( |
DBusMessage * |
message, |
|
|
const DBusError * |
error |
|
) |
| |
|
static |
Just print a unified error message when the RPC fails
- Parameters
-
[in] | message | Just to get the method to show where it happens |
[in] | error | The error message to print |
- Precondition
message
must still be valid
◆ coord_printer_id_create()
◆ send_message_and_receive_int32()
static int send_message_and_receive_int32 |
( |
struct coord_comm * |
instance, |
|
|
DBusMessage * |
message |
|
) |
| |
|
static |
Send the prepared message and receive and return a single 32 bit integer response
- Parameters
-
[in] | instance | The communication instance |
[in] | message | The prepared message to send |
- Return values
-
The | received integer on success |
-EIO | Failed to communicate with the CAPS universe service RPC |
-EINVAL | Bad reply from the CAPS universe service RPC |
◆ coord_printer_id_free()
◆ coord_printer_info_setup()
◆ coord_printer_ppd_setup()
◆ coord_printer_state_setup()
◆ coord_job_id_get_next_available()
◆ coord_job_data_get()
◆ coord_job_mark_finished()
◆ coord_job_state_set()
◆ coord_job_progress_report()
◆ handle_job_change_notifier()
static DBusHandlerResult handle_job_change_notifier |
( |
DBusMessage * |
message, |
|
|
void * |
data |
|
) |
| |
|
static |
Handle the "Job Change" DBUS signal, convert it to a library callback/notifier
- Parameters
-
- Returns
- DBUS message handling state
This signal is sent by a printing client if a job's state changes.
This handler must act in accordance to dbus_provider_send_job_change_notifier()
◆ provider_signal_dispatch()
static DBusHandlerResult provider_signal_dispatch |
( |
DBusConnection * |
connection, |
|
|
DBusMessage * |
message, |
|
|
void * |
data |
|
) |
| |
|
static |
The internal DBUS message dispatcher for incoming signals to printing providers
- Parameters
-
[in] | connection | The DBUS connection |
[in] | message | The signal message itself |
[in] | data | Our local library handle |
- Return values
-
DBUS_HANDLER_RESULT_NOT_YET_HANDLED | Unknown signal |
DBUS_HANDLER_RESULT_HANDLED | Signal processed |
- Note
- Must correspond to dbus_provider_send_job_change_notifier()
- Todo:
- Related to dbus_message_new_method_call()?
◆ dbus_bus_type_detect()
static DBusBusType dbus_bus_type_detect |
( |
void |
| ) |
|
|
static |
Decide what kind of DBUS bus should be used here
- Return values
-
DBUS_BUS_SYSTEM | Regular return, the system bus should be used |
DBUS_BUS_SESSION | Read description below |
When debugging support was compiled in (refer Setting up Debugging Support), the environment variable CAPS_DBUS_BUS can force the session bus.
◆ coord_connection_create()
Create and establish a communication connection to the printing coordinator
- Parameters
-
[in,out] | instance | The communication instance |
[in] | notifier | Notifier callback for job status changes |
[in] | data | The data parameter for the notifier callback |
- Return values
-
0 | On success |
-EIO | Failed to connect to DBUS |
-EBUSY | Failed to register at the CAPS universe DBUS service |
-ENOMSG | Failed to attach to CAPS universe DBUS signals to establisch notifiers |
◆ coord_connection_destroy()
void coord_connection_destroy |
( |
struct coord_comm * |
instance | ) |
|
Close the communication connection to the printing coordinator
- Parameters
-
[in] | instance | The communication instance |
◆ coord_notifiers_process()
int coord_notifiers_process |
( |
struct coord_comm * |
instance | ) |
|
Run the DBUS message queue and process events
- Parameters
-
[in] | instance | The communication instance |
- Returns
- 0 on success, negative errno else