<?xml version='1.0'?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->

<refentry id="sd_bus_enqueue_for_read"
          xmlns:xi="http://www.w3.org/2001/XInclude">

  <refentryinfo>
    <title>sd_bus_enqueue_for_read</title>
    <productname>systemd</productname>
  </refentryinfo>

  <refmeta>
    <refentrytitle>sd_bus_enqueue_for_read</refentrytitle>
    <manvolnum>3</manvolnum>
  </refmeta>

  <refnamediv>
    <refname>sd_bus_enqueue_for_read</refname>

    <refpurpose>Re-enqueue a bus message on a bus connection, for reading</refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <funcsynopsis>
      <funcsynopsisinfo>#include &lt;systemd/sd-bus.h&gt;</funcsynopsisinfo>

      <funcprototype>
        <funcdef>int <function>sd_bus_enqueue_for_read</function></funcdef>
        <paramdef>sd_bus *<parameter>bus</parameter></paramdef>
        <paramdef>sd_bus_message *<parameter>message</parameter></paramdef>
      </funcprototype>

    </funcsynopsis>
  </refsynopsisdiv>

  <refsect1>
    <title>Description</title>

    <para><function>sd_bus_enqueue_for_read()</function> may be used to re-enqueue an incoming bus message on
    the local read queue, so that it is processed and dispatched locally again, similarly to how an incoming
    message from the peer is processed. Takes a bus connection object and the message to enqueue. A reference
    is taken of the message and the caller's reference thus remains in possession of the caller. The message
    is enqueued at the end of the queue, thus will be dispatched after all other already queued messages are
    dispatched.</para>

    <para>This call is primarily useful for dealing with incoming method calls that may be processed only
    after an additional asynchronous operation completes. One example are PolicyKit authorization requests
    that are determined to be necessary to authorize a newly incoming method call: when the PolicyKit response
    is received the original method call may be re-enqueued to process it again, this time with the
    authorization result known.</para>
  </refsect1>

  <refsect1>
    <title>Return Value</title>

    <para>On success, this function return 0 or a positive integer. On failure, it returns a negative errno-style
    error code.</para>

    <refsect2>
      <title>Errors</title>

      <para>Returned errors may indicate the following problems:</para>

      <variablelist>
        <varlistentry>
          <term><constant>-ECHILD</constant></term>

          <listitem><para>The bus connection has been created in a different process.</para></listitem>
        </varlistentry>
      </variablelist>
    </refsect2>
  </refsect1>

  <xi:include href="libsystemd-pkgconfig.xml" />

  <refsect1>
    <title>See Also</title>

    <para>
      <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>sd-bus</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>sd_bus_send</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
    </para>
  </refsect1>

</refentry>
