<?xml version='1.0'?> <!--*-nxml-*-->
<!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_request_name"
          xmlns:xi="http://www.w3.org/2001/XInclude">

  <refentryinfo>
    <title>sd_bus_request_name</title>
    <productname>systemd</productname>
  </refentryinfo>

  <refmeta>
    <refentrytitle>sd_bus_request_name</refentrytitle>
    <manvolnum>3</manvolnum>
  </refmeta>

  <refnamediv>
    <refname>sd_bus_request_name</refname>
    <refname>sd_bus_request_name_async</refname>
    <refname>sd_bus_release_name</refname>
    <refname>sd_bus_release_name_async</refname>
    <refpurpose>Request or release a well-known service name on a bus</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>int <function>sd_bus_request_name</function></funcdef>
        <paramdef>sd_bus *<parameter>bus</parameter></paramdef>
        <paramdef>const char *<parameter>name</parameter></paramdef>
        <paramdef>uint64_t <parameter>flags</parameter></paramdef>
      </funcprototype>

      <funcprototype>
        <funcdef>int <function>sd_bus_request_name_async</function></funcdef>
        <paramdef>sd_bus *<parameter>bus</parameter></paramdef>
        <paramdef>sd_bus_slot **<parameter>slot</parameter></paramdef>
        <paramdef>const char *<parameter>name</parameter></paramdef>
        <paramdef>uint64_t <parameter>flags</parameter></paramdef>
        <paramdef>sd_bus_message_handler_t <parameter>callback</parameter></paramdef>
        <paramdef>void *<parameter>userdata</parameter></paramdef>
      </funcprototype>

      <funcprototype>
        <funcdef>int <function>sd_bus_release_name</function></funcdef>
        <paramdef>sd_bus *<parameter>bus</parameter></paramdef>
        <paramdef>const char *<parameter>name</parameter></paramdef>
      </funcprototype>

      <funcprototype>
        <funcdef>int <function>sd_bus_release_name_async</function></funcdef>
        <paramdef>sd_bus *<parameter>bus</parameter></paramdef>
        <paramdef>sd_bus_slot **<parameter>slot</parameter></paramdef>
        <paramdef>const char *<parameter>name</parameter></paramdef>
        <paramdef>sd_bus_message_handler_t <parameter>callback</parameter></paramdef>
        <paramdef>void *<parameter>userdata</parameter></paramdef>
      </funcprototype>
    </funcsynopsis>
  </refsynopsisdiv>

  <refsect1>
    <title>Description</title>

    <para><function>sd_bus_request_name()</function> requests a well-known service name on a bus. It takes a
    bus connection, a valid bus name, and a flags parameter. The flags parameter is a combination of zero or
    more of the following flags:</para>

    <variablelist>
      <varlistentry>
        <term><constant>SD_BUS_NAME_ALLOW_REPLACEMENT</constant></term>

        <listitem><para>After acquiring the name successfully, permit other peers to take over the name when they try
        to acquire it with the <constant>SD_BUS_NAME_REPLACE_EXISTING</constant> flag set. If
        <constant>SD_BUS_NAME_ALLOW_REPLACEMENT</constant> is not set on the original request, such a request by other
        peers will be denied.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><constant>SD_BUS_NAME_REPLACE_EXISTING</constant></term>

        <listitem><para>Take over the name if it was already acquired by another peer, and that other peer
        has permitted takeover by setting <constant>SD_BUS_NAME_ALLOW_REPLACEMENT</constant> while acquiring
        it.</para></listitem>
      </varlistentry>

      <varlistentry>
        <term><constant>SD_BUS_NAME_QUEUE</constant></term>

        <listitem><para>Queue the acquisition of the name when the name is already taken.</para></listitem>
      </varlistentry>
    </variablelist>

    <para><function>sd_bus_request_name()</function> operates in a synchronous fashion: a message requesting the name
    is sent to the bus broker, and the call waits until the broker responds.</para>

    <para><function>sd_bus_request_name_async()</function> is an asynchronous version of
    <function>sd_bus_request_name()</function>. Instead of waiting for the request to complete, the request message is
    enqueued. The specified <parameter>callback</parameter> will be called when the broker's response is received. If
    the parameter is specified as <constant>NULL</constant> a default implementation is used instead which will
    terminate the connection when the name cannot be acquired. The function returns a slot object in its
    <parameter>slot</parameter> parameter — if it is passed as non-<constant>NULL</constant> — which may be used as a
    reference to the name request operation. Use
    <citerefentry><refentrytitle>sd_bus_slot_unref</refentrytitle><manvolnum>3</manvolnum></citerefentry> to destroy
    this reference. Note that destroying the reference will not unregister the name, but simply ensure the specified
    callback is no longer called.</para>

    <para><function>sd_bus_release_name()</function> releases an acquired well-known name. It takes a bus connection
    and a valid bus name as parameters. This function operates synchronously, sending a release request message to the
    bus broker and waiting for it to reply.</para>

    <para><function>sd_bus_release_name_async()</function> is an asynchronous version of
    <function>sd_bus_release_name()</function>. The specified <parameter>callback</parameter> function is called when
    the name has been released successfully. If specified as <constant>NULL</constant> a generic implementation is used
    that ignores the result of the operation. As above, the <parameter>slot</parameter> (if
    non-<constant>NULL</constant>) is set to an object that may be used to reference the operation.</para>

    <para>These functions are supported only on bus connections, i.e. connections to a bus broker and not on direct
    connections.</para>
  </refsect1>

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

    <para>On success, these calls return 0 or a positive integer. On failure, these calls return a negative errno-style
    error code.</para>

    <para>If <constant>SD_BUS_NAME_QUEUE</constant> is specified, <function>sd_bus_request_name()</function> will return
    0 when the name is already taken by another peer and the client has been added to the queue for the name. In that
    case, the caller can subscribe to <literal>NameOwnerChanged</literal> signals to be notified when the name is
    successfully acquired.  <function>sd_bus_request_name()</function> returns &gt; 0 when the name has immediately
    been acquired successfully.</para>

    <refsect2>
      <title>Errors</title>

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

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

          <listitem><para>The caller already is the owner of the specified name.</para></listitem>
        </varlistentry>

        <varlistentry>
          <term><constant>-EEXIST</constant></term>

          <listitem><para>The name has already been acquired by a different peer, and SD_BUS_NAME_REPLACE_EXISTING was
          not specified or the other peer did not specify SD_BUS_NAME_ALLOW_REPLACEMENT while acquiring the
          name.</para></listitem>
        </varlistentry>

        <varlistentry>
          <term><constant>-ESRCH</constant></term>

          <listitem><para>It was attempted to release a name that is currently not registered on the
          bus.</para></listitem>
        </varlistentry>

        <varlistentry>
          <term><constant>-EADDRINUSE</constant></term>

          <listitem><para>It was attempted to release a name that is owned by a different peer on the
          bus.</para></listitem>
        </varlistentry>

        <varlistentry>
          <term><constant>-EINVAL</constant></term>

          <listitem><para>A specified parameter is invalid. This is also generated when the requested name is
          a special service name reserved by the D-Bus specification, or when the operation is requested on a
          connection that does not refer to a bus.</para></listitem>
        </varlistentry>

        <varlistentry>
          <term><constant>-ENOTCONN</constant></term>

          <listitem><para>The bus connection has been disconnected.</para></listitem>
        </varlistentry>

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

          <listitem><para>The bus connection has been created in a different process than the current
          one.</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_new</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>sd_bus_slot_unref</refentrytitle><manvolnum>3</manvolnum></citerefentry>
    </para>
  </refsect1>

</refentry>
