summaryrefslogtreecommitdiffstats
path: root/upstream/mageia-cauldron/man3/sd_bus_call_method.3
diff options
context:
space:
mode:
Diffstat (limited to 'upstream/mageia-cauldron/man3/sd_bus_call_method.3')
-rw-r--r--upstream/mageia-cauldron/man3/sd_bus_call_method.3162
1 files changed, 162 insertions, 0 deletions
diff --git a/upstream/mageia-cauldron/man3/sd_bus_call_method.3 b/upstream/mageia-cauldron/man3/sd_bus_call_method.3
new file mode 100644
index 00000000..6690ecbf
--- /dev/null
+++ b/upstream/mageia-cauldron/man3/sd_bus_call_method.3
@@ -0,0 +1,162 @@
+'\" t
+.TH "SD_BUS_CALL_METHOD" "3" "" "systemd 255" "sd_bus_call_method"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+sd_bus_call_method, sd_bus_call_methodv, sd_bus_call_method_async, sd_bus_call_method_asyncv \- Initialize a bus message object and invoke the corresponding D\-Bus method call
+.SH "SYNOPSIS"
+.sp
+.ft B
+.nf
+#include <systemd/sd\-bus\&.h>
+.fi
+.ft
+.HP \w'typedef\ int\ (*sd_bus_message_handler_t)('u
+.BI "typedef int (*sd_bus_message_handler_t)(sd_bus_message\ *" "m" ", void\ *" "userdata" ", sd_bus_error\ *" "ret_error" ");"
+.HP \w'int\ sd_bus_call_method('u
+.BI "int sd_bus_call_method(sd_bus\ *" "bus" ", const\ char\ *" "destination" ", const\ char\ *" "path" ", const\ char\ *" "interface" ", const\ char\ *" "member" ", sd_bus_error\ *" "ret_error" ", sd_bus_message\ **" "reply" ", const\ char\ *" "types" ", \&.\&.\&.);"
+.HP \w'int\ sd_bus_call_methodv('u
+.BI "int sd_bus_call_methodv(sd_bus\ *" "bus" ", const\ char\ *" "destination" ", const\ char\ *" "path" ", const\ char\ *" "interface" ", const\ char\ *" "member" ", sd_bus_error\ *" "ret_error" ", sd_bus_message\ **" "reply" ", const\ char\ *" "types" ", va_list\ " "ap" ");"
+.HP \w'int\ sd_bus_call_method_async('u
+.BI "int sd_bus_call_method_async(sd_bus\ *" "bus" ", sd_bus_slot\ **" "slot" ", const\ char\ *" "destination" ", const\ char\ *" "path" ", const\ char\ *" "interface" ", const\ char\ *" "member" ", sd_bus_message_handler_t\ " "callback" ", void\ *" "userdata" ", const\ char\ *" "types" ", \&.\&.\&.);"
+.HP \w'int\ sd_bus_call_method_asyncv('u
+.BI "int sd_bus_call_method_asyncv(sd_bus\ *" "bus" ", sd_bus_slot\ **" "slot" ", const\ char\ *" "destination" ", const\ char\ *" "path" ", const\ char\ *" "interface" ", const\ char\ *" "member" ", sd_bus_message_handler_t\ " "callback" ", void\ *" "userdata" ", const\ char\ *" "types" ", va_list\ " "ap" ");"
+.SH "DESCRIPTION"
+.PP
+\fBsd_bus_call_method()\fR
+is a convenience function for initializing a bus message object and calling the corresponding D\-Bus method\&. It combines the
+\fBsd_bus_message_new_method_call\fR(3),
+\fBsd_bus_message_append\fR(3)
+and
+\fBsd_bus_call\fR(3)
+functions into a single function call\&.
+.PP
+\fBsd_bus_call_method_async()\fR
+is a convenience function for initializing a bus message object and calling the corresponding D\-Bus method asynchronously\&. It combines the
+\fBsd_bus_message_new_method_call\fR(3),
+\fBsd_bus_message_append\fR(3)
+and
+\fBsd_bus_call_async\fR(3)
+functions into a single function call\&.
+.SH "RETURN VALUE"
+.PP
+On success, these functions return a non\-negative integer\&. On failure, they return a negative errno\-style error code\&.
+.SS "Errors"
+.PP
+See the man pages of
+\fBsd_bus_message_new_method_call\fR(3),
+\fBsd_bus_message_append\fR(3),
+\fBsd_bus_call\fR(3)
+and
+\fBsd_bus_call_async\fR(3)
+for a list of possible errors\&.
+.SH "NOTES"
+.PP
+Functions described here are available as a shared library, which can be compiled against and linked to with the
+\fBlibsystemd\fR\ \&\fBpkg-config\fR(1)
+file\&.
+.PP
+The code described here uses
+\fBgetenv\fR(3), which is declared to be not multi\-thread\-safe\&. This means that the code calling the functions described here must not call
+\fBsetenv\fR(3)
+from a parallel thread\&. It is recommended to only do calls to
+\fBsetenv()\fR
+from an early phase of the program when no other threads have been started\&.
+.SH "EXAMPLES"
+.PP
+\fBExample\ \&1.\ \&Make a call to a D\-Bus method that takes a single parameter\fR
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+/* SPDX\-License\-Identifier: MIT\-0 */
+
+/* This is equivalent to:
+ * busctl call org\&.freedesktop\&.systemd1 /org/freedesktop/systemd1 \e
+ * org\&.freedesktop\&.systemd1\&.Manager GetUnitByPID $$
+ *
+ * Compile with \*(Aqcc print\-unit\-path\-call\-method\&.c \-lsystemd\*(Aq
+ */
+
+#include <errno\&.h>
+#include <stdio\&.h>
+#include <sys/types\&.h>
+#include <unistd\&.h>
+
+#include <systemd/sd\-bus\&.h>
+
+#define _cleanup_(f) __attribute__((cleanup(f)))
+#define DESTINATION "org\&.freedesktop\&.systemd1"
+#define PATH "/org/freedesktop/systemd1"
+#define INTERFACE "org\&.freedesktop\&.systemd1\&.Manager"
+#define MEMBER "GetUnitByPID"
+
+static int log_error(int error, const char *message) {
+ errno = \-error;
+ fprintf(stderr, "%s: %m\en", message);
+ return error;
+}
+
+int main(int argc, char **argv) {
+ _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
+ _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
+ _cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL;
+ int r;
+
+ r = sd_bus_open_system(&bus);
+ if (r < 0)
+ return log_error(r, "Failed to acquire bus");
+
+ r = sd_bus_call_method(bus, DESTINATION, PATH, INTERFACE, MEMBER, &error, &reply, "u", (unsigned) getpid());
+ if (r < 0)
+ return log_error(r, MEMBER " call failed");
+
+ const char *ans;
+ r = sd_bus_message_read(reply, "o", &ans);
+ if (r < 0)
+ return log_error(r, "Failed to read reply");
+
+ printf("Unit path is \e"%s\e"\&.\en", ans);
+
+ return 0;
+}
+.fi
+.if n \{\
+.RE
+.\}
+.PP
+This defines a minimally useful program that will open a connection to the bus, call a method, wait for the reply, and finally extract and print the answer\&. It does error handling and proper memory management\&.
+.SH "HISTORY"
+.PP
+\fBsd_bus_call_method()\fR,
+\fBsd_bus_call_methodv()\fR,
+\fBsd_bus_call_method_async()\fR, and
+\fBsd_bus_call_method_asyncv()\fR
+were added in version 246\&.
+.SH "SEE ALSO"
+.PP
+\fBsystemd\fR(1),
+\fBsd-bus\fR(3),
+\fBsd_bus_message_new_method_call\fR(3),
+\fBsd_bus_message_append\fR(3),
+\fBsd_bus_call\fR(3),
+\fBsd_bus_set_property\fR(3),
+\fBsd_bus_emit_signal\fR(3)