Interface DBusMessageFilterFunction

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

@FunctionalInterface @Generated("org.javagi.JavaGI") public interface DBusMessageFilterFunction extends FunctionPointer

Functional interface declaration of the DBusMessageFilterFunction callback.

See Also:
  • Method Details

    • run

      DBusMessage run(DBusConnection connection, DBusMessage message, boolean incoming)

      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.
      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.
      Since:
      2.26
    • upcall

      default MemorySegment upcall(MemorySegment connection, MemorySegment message, int incoming, MemorySegment userData)
      The upcall method is called from native code. The parameters are marshaled and run(DBusConnection, DBusMessage, boolean) is executed.
    • toCallback

      default MemorySegment toCallback(Arena arena)
      Creates a native function pointer to the upcall(MemorySegment, MemorySegment, int, MemorySegment) method.
      Specified by:
      toCallback in interface FunctionPointer
      Parameters:
      arena - the arena in which the function pointer is allocated
      Returns:
      the native function pointer