<?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_get_current_handler" xmlns:xi="http://www.w3.org/2001/XInclude">

  <refentryinfo>
    <title>sd_bus_get_current_handler</title>
    <productname>systemd</productname>
  </refentryinfo>

  <refmeta>
    <refentrytitle>sd_bus_get_current_handler</refentrytitle>
    <manvolnum>3</manvolnum>
  </refmeta>

  <refnamediv>
    <refname>sd_bus_get_current_handler</refname>
    <refname>sd_bus_get_current_message</refname>
    <refname>sd_bus_get_current_slot</refname>
    <refname>sd_bus_get_current_userdata</refname>

    <refpurpose>Query information of the callback a bus object is currently running</refpurpose>
  </refnamediv>

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

      <xi:include href="sd_bus_add_match.xml" xpointer="sd_bus_message_handler_t"/>

      <funcprototype>
        <funcdef>sd_bus_message_handler_t <function>sd_bus_get_current_handler</function></funcdef>
        <paramdef>sd_bus *<parameter>bus</parameter></paramdef>
      </funcprototype>

      <funcprototype>
        <funcdef>sd_bus_message* <function>sd_bus_get_current_message</function></funcdef>
        <paramdef>sd_bus *<parameter>bus</parameter></paramdef>
      </funcprototype>

      <funcprototype>
        <funcdef>sd_bus_slot* <function>sd_bus_get_current_slot</function></funcdef>
        <paramdef>sd_bus *<parameter>bus</parameter></paramdef>
      </funcprototype>

      <funcprototype>
        <funcdef>void* <function>sd_bus_get_current_userdata</function></funcdef>
        <paramdef>sd_bus *<parameter>bus</parameter></paramdef>
      </funcprototype>
    </funcsynopsis>
  </refsynopsisdiv>

  <refsect1>
    <title>Description</title>

    <para>Whenever sd-bus is about to invoke a user-supplied callback function, it stores the
    current callback, D-Bus message, slot and userdata pointer and allows these to be queried via
    <function>sd_bus_get_current_handler()</function>,
    <function>sd_bus_get_current_message()</function>,
    <function>sd_bus_get_current_slot()</function> and
    <function>sd_bus_get_current_userdata()</function>, respectively. If <parameter>bus</parameter>
    cannot be resolved or if execution does not reside in a user-supplied callback of
    <parameter>bus</parameter>, these functions return <constant>NULL</constant>.</para>
  </refsect1>

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

    <para>On success, these functions return the requested object. On failure, they return
    <constant>NULL</constant>.</para>
  </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>
    </para>
  </refsect1>

</refentry>
