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

  <refentryinfo>
    <title>sd_bus_message_new_signal</title>
    <productname>systemd</productname>
  </refentryinfo>

  <refmeta>
    <refentrytitle>sd_bus_message_new_signal</refentrytitle>
    <manvolnum>3</manvolnum>
  </refmeta>

  <refnamediv>
    <refname>sd_bus_message_new_signal</refname>

    <refpurpose>Create a signal message</refpurpose>
  </refnamediv>

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

      <funcprototype>
        <funcdef>int sd_bus_message_new_signal</funcdef>
        <paramdef>sd_bus *<parameter>bus</parameter></paramdef>
        <paramdef>sd_bus_message **<parameter>m</parameter></paramdef>
        <paramdef>const char *<parameter>path</parameter></paramdef>
        <paramdef>const char *<parameter>interface</parameter></paramdef>
        <paramdef>const char *<parameter>member</parameter></paramdef>
      </funcprototype>
    </funcsynopsis>
  </refsynopsisdiv>

  <refsect1>
    <title>Description</title>

    <para>The <function>sd_bus_message_new_signal()</function> function creates a new bus message
    object that encapsulates a D-Bus signal, and returns it in the <parameter>m</parameter> output
    parameter. The signal will be sent to path <parameter>path</parameter>, on the interface
    <parameter>interface</parameter>, member <parameter>member</parameter>. When this message is
    sent, no reply is expected. See
    <citerefentry><refentrytitle>sd_bus_message_new_method_call</refentrytitle><manvolnum>1</manvolnum></citerefentry>
    for a short description of the meaning of the <parameter>path</parameter>,
    <parameter>interface</parameter>, and <parameter>member</parameter> parameters.
    </para>
  </refsect1>

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

    <para>This function returns 0 if the message object was successfully created, and a negative
    errno-style error code otherwise.</para>

    <refsect2>
      <title>Errors</title>

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

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

          <listitem><para>The output parameter <parameter>m</parameter> is
          <constant>NULL</constant>.</para>

          <para>The <parameter>path</parameter> parameter is not a valid D-Bus path
          (<literal>/an/object/path</literal>), the <parameter>interface</parameter> parameter is not
          a valid D-Bus interface name (<literal>an.interface.name</literal>), or the
          <parameter>member</parameter> parameter is not a valid D-Bus member
          (<literal>Name</literal>).</para></listitem>
        </varlistentry>

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

          <listitem><para>The bus parameter <parameter>bus</parameter> is <constant>NULL</constant> or
          the bus is not connected.</para></listitem>
        </varlistentry>

        <varlistentry>
          <term><constant>-ENOMEM</constant></term>

          <listitem><para>Memory allocation failed.</para></listitem>
        </varlistentry>
      </variablelist>
    </refsect2>
  </refsect1>

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

  <refsect1>
    <title>Examples</title>

    <example>
      <title>Send a simple signal</title>

      <programlisting><xi:include href="send-unit-files-changed.c" parse="text" /></programlisting>

      <para>This function in systemd sources is used to emit the
      <literal>UnitFilesChanged</literal> signal when the unit files have been changed.
      </para>
    </example>
  </refsect1>

  <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_emit_signal</refentrytitle><manvolnum>3</manvolnum></citerefentry>
    </para>
  </refsect1>

</refentry>
