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.
Functional interface declaration of the DBusMessageFilterFunction callback.
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionrun(DBusConnection connection, DBusMessage message, boolean incoming) Signature for function used in g_dbus_connection_add_filter().default MemorySegmenttoCallback(Arena arena) Creates a native function pointer to theupcall(MemorySegment, MemorySegment, int, MemorySegment)method.default MemorySegmentupcall(MemorySegment connection, MemorySegment message, int incoming, MemorySegment userData) Theupcallmethod is called from native code.
-
Method Details
-
run
Signature for function used in g_dbus_connection_add_filter().
A filter function is passed a
GDBusMessageand expected to return aGDBusMessagetoo. Passive filter functions that don't modify the message can simply return themessageobject: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
GDBusMessageis different frommessageand cannot be sent onconnection(it could use features, such as file descriptors, not compatible withconnection),then a warning is logged to standard error. Applications can check this ahead of time using g_dbus_message_to_blob() passing aGDBusCapabilityFlagsvalue obtained fromconnection.- Parameters:
connection- AGDBusConnection.message- A lockedGDBusMessagethat the filter function takes ownership of.incoming-trueif it is a message received from the other peer,falseif it is a message to be sent to the other peer.- Returns:
- A
GDBusMessagethat will be freed with g_object_unref() ornullto drop the message. Passive filter functions can simply return the passedmessageobject. - Since:
- 2.26
-
upcall
default MemorySegment upcall(MemorySegment connection, MemorySegment message, int incoming, MemorySegment userData) Theupcallmethod is called from native code. The parameters are marshaled andrun(DBusConnection, DBusMessage, boolean)is executed. -
toCallback
Creates a native function pointer to theupcall(MemorySegment, MemorySegment, int, MemorySegment)method.- Specified by:
toCallbackin interfaceFunctionPointer- Parameters:
arena- the arena in which the function pointer is allocated- Returns:
- the native function pointer
-