DBus for Lua.
ldbus is a C binding to dbus for Lua.
Compatible with Lua 5.1 and 5.2 (thanks compat-5.2).
Status
Installation
ldbus is on moonrocks: https://rocks.moonscript.org/modules/daurnimator/ldbus
Install via luarocks, you will need to provide paths to dbus/dbus.h
and dbus/dbus-arch-deps.h
luarocks install --server=http://rocks.moonscript.org/manifests/daurnimator ldbus DBUS_INCDIR=/usr/include/dbus-1.0/ DBUS_ARCH_INCDIR=/usr/lib/dbus-1.0/include
Usage
example.lua is a lua version of Matthew Johnson's example
Bound from C
- Functions that normally take a
DBusError
returnnil, "error_message"
on failure. - Errors will be thrown on out of memory
C | Lua | Comments |
---|---|---|
dbus_bus_get() |
ldbus.bus.get() |
Takes type as one of "session" , "system" or "starter" . The connection will not have exit_on_disconnect set. |
dbus_bus_register() |
ldbus.bus.register() |
|
dbus_bus_set_unique_name() |
ldbus.bus.set_unique_name() |
|
dbus_bus_get_unique_name() |
ldbus.bus.get_unique_name() |
|
dbus_bus_request_name() |
ldbus.bus.request_name() |
Takes flags as a table contain keys "allow_replacement" , "do_not_queue" and "replace_existing" ; On success returns one of "primary_owner" , "in_queue" , "exists" or "already_owner" |
dbus_bus_release_name() |
ldbus.bus.release_name() |
On success, returns one of "released" , "non_existant" or "not_owner" |
dbus_bus_name_has_owner() |
ldbus.bus.name_has_owner() |
|
dbus_bus_start_service_by_name() |
ldbus.bus.start_service_by_name() |
|
dbus_bus_add_match() |
ldbus.bus.add_match() |
On success, returns one of "success" or "already_running" |
dbus_bus_remove_match() |
ldbus.bus.remove_match() |
|
dbus_connection_open() |
ldbus.connection.open() |
|
dbus_connection_get_is_connected() |
my_conn:get_is_connected() |
|
dbus_connection_get_is_authenticated() |
my_conn:get_is_authenticated() |
|
dbus_connection_get_is_anonymous() |
my_conn:get_is_anonymous() |
|
dbus_connection_get_server_id() |
my_conn:get_server_id() |
|
dbus_connection_send() |
my_conn:send() |
|
dbus_connection_send_with_reply() |
pending_call = my_conn:send_with_reply(msg [, timeout]) |
Timeout is in seconds, when not provided there will be no timeout. |
dbus_connection_send_with_reply_and_block() |
response_msg = my_conn:send_with_reply_and_block(msg [, timeout]) |
Timeout is in seconds, when not provided there will be no timeout. |
dbus_connection_flush() |
my_conn:flush() |
|
dbus_connection_read_write_dispatch() |
my_conn:read_write_dispatch() |
|
dbus_connection_read_write() |
my_conn:read_write() |
|
dbus_connection_pop_message() |
my_conn:pop_message() |
|
dbus_connection_get_dispatch_status() |
my_conn:get_dispatch_status() |
|
dbus_connection_dispatch() |
my_conn:dispatch() |
|
dbus_connection_set_watch_functions() |
my_conn:set_watch_functions() |
|
dbus_connection_set_timeout_functions() |
my_conn:set_timeout_functions() |
|
dbus_connection_set_dispatch_status_function() |
my_conn:set_dispatch_status_function() |
|
dbus_connection_set_wakeup_main_function() |
my_conn:set_wakeup_main_function(callback) |
|
dbus_connection_register_object_path() |
my_conn:register_object_path() |
|
dbus_connection_register_fallback() |
my_conn:register_fallback() |
|
dbus_connection_unregister_object_path() |
my_conn:unregister_object_path() |
|
dbus_connection_set_max_message_size() |
my_conn:set_max_message_size() |
|
dbus_connection_get_max_message_size() |
my_conn:get_max_message_size() |
|
dbus_connection_set_max_received_size() |
my_conn:set_max_received_size() |
|
dbus_connection_get_max_received_size() |
my_conn:get_max_received_size() |
|
dbus_connection_get_outgoing_size() |
my_conn:get_outgoing_size() |
|
dbus_connection_has_messages_to_send() |
my_conn:has_messages_to_send() |
|
dbus_message_new() |
ldbus.message.new(type_str) |
The type is taken as a string (uses dbus_message_type_from_string() ) |
dbus_message_new_method_call() |
ldbus.message.new_method_call() |
|
dbus_message_new_signal() |
ldbus.message.new_signal() |
|
dbus_message_get_serial() |
my_message:get_serial() |
|
dbus_message_set_reply_serial() |
my_message:set_reply_serial() |
|
dbus_message_get_reply_serial() |
my_message:get_reply_serial() |
|
dbus_message_new_method_return() |
my_message:new_method_return() |
|
dbus_message_new_error() |
my_message:new_error() |
|
dbus_message_copy() |
my_message:copy() |
|
dbus_message_get_type() |
my_message:get_type() |
|
dbus_message_iter_init() |
my_iter = my_message:iter_init([my_iter]) |
Returns nil if message has no arguments |
dbus_message_iter_init_append() |
my_iter = my_message:iter_init_append([my_iter]) |
|
dbus_message_set_no_reply() |
my_message:set_no_reply() |
|
dbus_message_get_no_reply() |
my_message:get_no_reply() |
|
dbus_message_set_auto_start() |
my_message:set_auto_start() |
|
dbus_message_get_auto_start() |
my_message:get_auto_start() |
|
dbus_message_set_path() |
my_message:set_path() |
|
dbus_message_get_path() |
my_message:get_path() |
|
dbus_message_get_path_decomposed() |
my_message:get_path_decomposed() |
|
dbus_message_set_interface() |
my_message:set_interface() |
|
dbus_message_get_interface() |
my_message:get_interface() |
|
dbus_message_set_member() |
my_message:set_member() |
|
dbus_message_get_member() |
my_message:get_member() |
|
dbus_message_set_error_name() |
my_message:set_error_name() |
|
dbus_message_get_error_name() |
my_message:get_error_name() |
|
dbus_message_set_destination() |
my_message:set_destination() |
|
dbus_message_get_destination() |
my_message:get_destination() |
|
dbus_message_set_sender() |
my_message:set_sender() |
|
dbus_message_get_sender() |
my_message:get_sender() |
|
dbus_message_get_signature() |
my_message:get_signature() |
|
dbus_message_iter_has_next() |
bool = my_message_iter:has_next() |
|
dbus_message_iter_next() |
bool = my_message_iter:next() |
|
dbus_message_iter_get_element_type() |
type = my_message_iter:get_element_type() |
DBUS_TYPE_INVALID is returned as nil |
dbus_message_iter_recurse() |
sub_iter = my_message_iter:recurse([sub_iter]) |
Creates a new DBusMessageIter if one is not passed |
dbus_message_iter_get_signature() |
sig = my_message_iter:get_signature() |
|
dbus_message_iter_get_basic() |
object = my_message_iter:get_basic() |
number types are all returned as lua numbers (even 64bit integers at the moment; so watch out); strings, object paths and signatures will be returned as strings |
dbus_message_iter_append_basic() |
my_message_iter:append_basic(object [, type]) |
|
dbus_message_iter_open_container() |
sub_iter = my_message_iter:open_container(type [, sign [, sub_iter]]) |
Creates sub_iter if not passed. Returns the sub_iter or nil on failure |
dbus_message_iter_close_container() |
ok = my_message_iter:close_container(sub_iter) |
|
dbus_pending_call_set_notify() |
my_pending_call:set_notify(callback) |
Callback gets no arguments |
dbus_pending_call_cancel() |
my_pending_call:cancel() |
|
dbus_pending_call_get_completed() |
`completed = my_pending_call:get_completed() | |
dbus_pending_call_steal_reply() |
`message = my_pending_call:steal_reply() | |
dbus_pending_call_block() |
my_pending_call:block() |
|
dbus_timeout_get_interval() |
secs = my_timeout:get_interval() |
Returned number is in seconds (rather than milliseconds) |
dbus_timeout_handle() |
ok = my_timeout:handle() |
|
dbus_timeout_get_enabled() |
enabled = my_timeout:get_enabled() |
|
DBUS_WATCH_READABLE |
ldbus.watch.READABLE |
|
DBUS_WATCH_WRITABLE |
ldbus.watch.WRITABLE |
|
DBUS_WATCH_HANGUP |
ldbus.watch.HANGUP |
|
DBUS_WATCH_ERROR |
ldbus.watch.ERROR |
|
dbus_watch_get_unix_fd() |
fd = my_watch:get_unix_fd() |
Returns nil when no fd is available |
dbus_watch_get_socket() |
fd = my_watch:get_socket() |
Returns nil when no fd is available |
dbus_watch_get_flags() |
flags = my_watch:get_flags() |
flags will be the a number |
dbus_watch_handle() |
ok = my_watch:handle(flags) |
|
dbus_watch_get_enabled() |
enabled = my_watch:get_enabled() |
Other
ldbus.types
A table of the dbus types from name to type (as a character)
key | value |
---|---|
"boolean" |
"b" |
"byte" |
"y" |
"double" |
"d" |
"int16" |
"n" |
"int32" |
"i" |
"int64" |
"x" |
"uint16" |
"q" |
"uint32" |
"u" |
"uint64" |
"t" |
"string" |
"s" |
"signature" |
"g" |
"object_path" |
"o" |
"array" |
"a" |
"dict_entry" |
"e" |
"variant" |
"v" |
"struct" |
"r" |
ldbus.basic_types
A table of the dbus basic types from name to type (as a character)
key | value |
---|---|
"boolean" |
"b" |
"byte" |
"y" |
"double" |
"d" |
"int16" |
"n" |
"int32" |
"i" |
"int64" |
"x" |
"uint16" |
"q" |
"uint32" |
"u" |
"uint64" |
"t" |
"string" |
"s" |
"signature" |
"g" |
"object_path" |
"o" |
my_iter = ldbus.message.iter.new()
Creates a new DBusMessageIter
object
new_iter = my_iter:clone()
Creates a copy of the given DBusMessageIter