SD_BUS_MESSAGE_NEW_METHOD_CALL - Online Linux Manual PageSection : 3
Updated :
Source : systemd 250
Note : sd_bus_message_new_method_call

NAMEsd_bus_message_new_method_call, sd_bus_message_new_method_return − Create a method call message

SYNOPSIS#include <systemd/sd−bus​.h>int sd_bus_message_new_method_call(sd_bus *bus, sd_bus_message **m, const char *destination, const char *path, const char *interface, const char *member); int sd_bus_message_new_method_return(sd_bus_message *call, sd_bus_message **m);

DESCRIPTIONThe sd_bus_message_new_method_call() function creates a new bus message object that encapsulates a D−Bus method call, and returns it in the m output parameter​. The call will be made on the destination destination, path path, on the interface interface, member member​. Briefly, the destination is a dot−separated name that identifies a service connected to the bus​. The path is a slash−separated identifier of an object within the destination that resembles a file system path​. The meaning of this path is defined by the destination​. The interface is a dot−separated name that resembles a Java interface name that identifies a group of methods and signals supported by the object identified by path​. Methods and signals are collectively called members and are identified by a simple name composed of ASCII letters, numbers, and underscores​. See the D−Bus Tutorial[1] for an in−depth explanation​. The destination parameter may be NULL​. The interface parameter may be NULL, if the destination has only a single member with the given name and there is no ambiguity if the interface name is omitted​. Note that this is a low level interface​. See sd_bus_call_method(3) for a more convenient way of calling D−Bus methods​. The sd_bus_message_new_method_return() function creates a new bus message object that is a reply to the method call call and returns it in the m output parameter​. The call parameter must be a method call message​. The sender of call is used as the destination​.

RETURN VALUEOn success, these functions return a non−negative integer​. On failure, they return a negative errno−style error code​.

ErrorsReturned errors may indicate the following problems: −EINVAL The output parameter m is NULL​. The destination parameter is non−null and is not a valid D−Bus service name ("org​.somewhere​.Something"), the path parameter is not a valid D−Bus path ("/an/object/path"), the interface parameter is non−null and is not a valid D−Bus interface name ("an​.interface​.name"), or the member parameter is not a valid D−Bus member ("Name")​. The call parameter is not a method call object​. −ENOTCONN The bus parameter bus is NULL or the bus is not connected​. −ENOMEM Memory allocation failed​. −EPERM The call parameter is not sealed​. −EOPNOTSUPP The call message does not have a cookie​.

NOTESThese APIs are implemented as a shared library, which can be compiled and linked to with the libsystemd ​pkg-config(1) file​.

EXAMPLESExample ​1. ​Make a call to a D−Bus method that takes a single parameter /* SPDX−License−Identifier: CC0−1​.0 */ #include <stdio​.h> #include <string​.h> #include <unistd​.h> #include <sys/types​.h> #include <systemd/sd−bus​.h> #define _cleanup_(f) __attribute__((cleanup(f))) /* This is equivalent to: * busctl call org​.freedesktop​.systemd1 /org/freedesktop/systemd1 \ * org​.freedesktop​.systemd1​.Manager GetUnitByPID $$ * * Compile with 'cc −lsystemd print−unit−path​.c' */ #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) { fprintf(stderr, "%s: %s\n", message, strerror(−error)); return error; } static int print_unit_path(sd_bus *bus) { _cleanup_(sd_bus_message_unrefp) sd_bus_message *m = 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_message_new_method_call(bus, &m, DESTINATION, PATH, INTERFACE, MEMBER); if (r < 0) return log_error(r, "Failed to create bus message"); r = sd_bus_message_append(m, "u", (unsigned) getpid()); if (r < 0) return log_error(r, "Failed to append to bus message"); r = sd_bus_call(bus, m, −1, &error, &reply); if (r < 0) return log_error(r, "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 \"%s\"​.\n", ans); return 0; } int main(int argc, char **argv) { _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; int r; r = sd_bus_open_system(&bus); if (r < 0) return log_error(r, "Failed to acquire bus"); print_unit_path(bus); }This defines a minimally useful program that will open a connection to the bus, create a message object, send it, wait for the reply, and finally extract and print the answer​. It does error handling and proper memory management​.

SEE ALSOsystemd(1), sd-bus(3), sd_bus_call(3), sd_bus_call_method(3), sd_bus_path_encode(3)

NOTES 1. D-Bus Tutorial ­https://dbus.freedesktop.org/doc/dbus-tutorial.html#concepts
0
Johanes Gumabo
Data Size   :   19,992 byte
man-sd_bus_message_new_method_return.3Build   :   2024-12-29, 07:25   :  
Visitor Screen   :   x
Visitor Counter ( page / site )   :   3 / 260,674
Visitor ID   :     :  
Visitor IP   :   3.148.104.103   :  
Visitor Provider   :   AMAZON-02   :  
Provider Position ( lat x lon )   :   39.962500 x -83.006100   :   x
Provider Accuracy Radius ( km )   :   1000   :  
Provider City   :   Columbus   :  
Provider Province   :   Ohio ,   :   ,
Provider Country   :   United States   :  
Provider Continent   :   North America   :  
Visitor Recorder   :   Version   :  
Visitor Recorder   :   Library   :  
Online Linux Manual Page   :   Version   :   Online Linux Manual Page - Fedora.40 - march=x86-64 - mtune=generic - 24.12.29
Online Linux Manual Page   :   Library   :   lib_c - 24.10.03 - march=x86-64 - mtune=generic - Fedora.40
Online Linux Manual Page   :   Library   :   lib_m - 24.10.03 - march=x86-64 - mtune=generic - Fedora.40
Data Base   :   Version   :   Online Linux Manual Page Database - 24.04.13 - march=x86-64 - mtune=generic - fedora-38
Data Base   :   Library   :   lib_c - 23.02.07 - march=x86-64 - mtune=generic - fedora.36

Very long time ago, I have the best tutor, Wenzel Svojanovsky . If someone knows the email address of Wenzel Svojanovsky , please send an email to johanes_gumabo@yahoo.co.id .
If error, please print screen and send to johanes_gumabo@yahoo.co.id
Under development. Support me via PayPal.