Interface DBusConnection.OnDBusMessageFilterFunction

Enclosing class:
DBusConnection
Functional Interface:
This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

@FunctionalInterface public static interface DBusConnection.OnDBusMessageFilterFunction
  • Method Details

    • onDBusMessageFilterFunction

      DBusMessage onDBusMessageFilterFunction(CallbackHandler __self, @Nonnull DBusConnection connection, @Nonnull DBusMessage message, boolean incoming, @Nullable Pointer user_data)
      Signature for function used in g_dbus_connection_add_filter().

      A filter function is passed a #GDBusMessage and expected to return
      a #GDBusMessage too. Passive filter functions that don't modify the
      message can simply return the @message object:
       static GDBusMessage *
       passive_filter (GDBusConnection *connection
                       GDBusMessage    *message,
                       gboolean         incoming,
                       gpointer         user_data)
       {
         // inspect @message
         return message;
       }
       

      Filter functions that wants to drop a message can simply return %NULL:
       static GDBusMessage *
       drop_filter (GDBusConnection *connection
                    GDBusMessage    *message,
                    gboolean         incoming,
                    gpointer         user_data)
       {
         if (should_drop_message)
           {
             g_object_unref (message);
             message = NULL;
           }
         return message;
       }
       

      Finally, a filter function may modify a message by copying it:
       static GDBusMessage *
       modifying_filter (GDBusConnection *connection
                         GDBusMessage    *message,
                         gboolean         incoming,
                         gpointer         user_data)
       {
         GDBusMessage *copy;
         GError *error;
       
         error = NULL;
         copy = g_dbus_message_copy (message, &error);
         // handle @error being set
         g_object_unref (message);
       
         // modify @copy
       
         return copy;
       }
       

      If the returned #GDBusMessage is different from @message and cannot
      be sent on @connection (it could use features, such as file
      descriptors, not compatible with @connection), then a warning is
      logged to standard error. Applications can
      check this ahead of time using g_dbus_message_to_blob() passing a
      #GDBusCapabilityFlags value obtained from @connection.
      Parameters:
      connection - A #GDBusConnection.
      message - A locked #GDBusMessage that the filter function takes ownership of.
      incoming - %TRUE if it is a message received from the other peer, %FALSE if it is a message to be sent to the other peer.
      user_data - User data passed when adding the filter.
      Returns:
      A #GDBusMessage that will be freed with g_object_unref() or %NULL to drop the message. Passive filter functions can simply return the passed @message object.