SD_BUS_SEND(3)
πΈ NAME πΈ
okay so bestie, welcome to SD_BUS_SEND(3) β manual name sd_bus_send β the page all about queueing a D-Bus message for transfer. π
β¨
It covers these three icons:
sd_bus_sendsd_bus_send_tosd_bus_message_send
All three: Queue a D-Bus message for transfer. π
β¨ SYNOPSIS β¨
#include <systemd/sd-bus.h>
int sd_bus_send(sd_bus *bus, sd_bus_message *m, uint64_t *cookie);
int sd_bus_send_to(sd_bus *bus, sd_bus_message *m,
const char *destination, uint64_t *cookie);
int sd_bus_message_send(sd_bus_message *m);
π¦ DESCRIPTION π¦
sd_bus_send() queues the bus message object m for transfer. If bus is NULL, it uses the bus that m is attached to. bus only needs to be set when the message is sent to a different bus than the one itβs attached to β for example, when forwarding messages. If the output parameter cookie is not NULL, it gets set to the message identifier. That value can later be used to match incoming replies to their corresponding messages. If cookie is set to NULL and the message is not sealed, sd_bus_send() assumes the message m does not expect a reply and adds the necessary headers to indicate this. π
bestie heads up: in most scenarios,sd_bus_send()should not be called directly. Instead, use higher level functions such assd_bus_call_method(3)andsd_bus_reply_method_return(3), which callsd_bus_send()internally. π
sd_bus_send_to() is a shorthand for sending a message to a specific destination. Its main use case is to simplify sending unicast signal messages β signals that only have a single receiver. Its behavior is similar to calling sd_bus_message_set_destination(3) followed by calling sd_bus_send(). π
sd_bus_send() / sd_bus_send_to() will write the message directly to the underlying transport (e.g. kernel socket buffer) if possible. If the connection is not set up fully yet, the message is queued locally. If the transport buffers are congested, any unwritten message data is queued locally, too. If the connection has been closed or is currently being closed, the call fails. sd_bus_process(3) should be invoked to write out any queued message data to the transport. π₯
sd_bus_message_send() is the same as sd_bus_send() but without the first and last argument. sd_bus_message_send(m) is equivalent to sd_bus_send(sd_bus_message_get_bus(m), m, NULL). π«Ά
π RETURN VALUE π
On success, these functions return a non-negative integer. On failure, they return a negative errno-style error code. β¨
π Errors π
Returned errors may indicate the following problems:
-EINVALβ The input parametermisNULL. Added in version 246.-EOPNOTSUPPβ The bus connection does not support sending file descriptors. Added in version 246.-ECHILDβ The bus connection was allocated in a parent process and is being reused in a child process afterfork(). Added in version 246.-ENOBUFSβ The bus connectionβs write queue is full. Added in version 246.-ENOTCONNβ The input parameterbusisNULLor the bus is not connected. Added in version 246.-ECONNRESETβ The bus connection was closed while waiting for the response. Added in version 246.-ENOMEMβ Memory allocation failed. Added in version 246.
π NOTES π
Functions described here are available as a shared library, which can be compiled against and linked to with the libsystemd pkg-config(1) file. π§
All functions listed here are thread-agnostic and only a single thread may operate on a given object at any given time. Different threads may access the same object at different times. Multiple independent objects may be used from different threads in parallel. π
The code described here uses getenv(3), which is declared to be not multi-thread-safe. This means that the code calling the functions described here must not call setenv(3) from a parallel thread. It is recommended to only do calls to setenv() from an early phase of the program when no other threads have been started. π
π¦ HISTORY π¦
sd_bus_send() and sd_bus_send_to() were added in version 246. β
π₯ SEE ALSO π₯
systemd(1)sd-bus(3)sd_bus_call_method(3)sd_bus_message_set_destination(3)sd_bus_reply_method_return(3)sd_bus_process(3)
okay thatβs the whole vibe β brought to you by systemd 261.3 and the manual page SD_BUS_SEND(3) ππβ¨
π¦ where this page comes from
- ubuntu stonking: libsystemd-dev 261.3-0ubuntu3 Β· LGPL-2.1-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms