From: Jan Moringen <jan.moringen@uni-bielefeld.de>
To: Michael Albinus <michael.albinus@gmx.de>
Cc: emacs-devel@gnu.org
Subject: Re: DBus methods without name grabbing
Date: Wed, 05 Jan 2011 05:17:28 +0100 [thread overview]
Message-ID: <26843_1294201050_ZZh0g3doKzQB1.00_1294201048.2508.1.camel@gunhead> (raw)
In-Reply-To: <87zkrhf081.fsf@gmx.de>
[-- Attachment #1: Type: text/plain, Size: 782 bytes --]
Hi Michael.
> >> - We might introduce a new function `dbus-register-service' (in dbusbind.c).
> >> It could offer optional argument flags, a list of the supported flags
> >> of "org.freedesktop.DBus.RequestName"
> >> (DBUS_NAME_FLAG_ALLOW_REPLACEMENT, DBUS_NAME_FLAG_REPLACE_EXISTING,
> >> DBUS_NAME_FLAG_DO_NOT_QUEUE). This function shall be called in
> >> `dbus-register-method' and `dbus-register-property' when
> >> `dont-register-service' is nil. Btw, the function
> >> `dbus-unregister-service' exists already ...
> >
> > I would rather tackle this change in a separate patch later.
>
> OK, I'll do it next days (except you want to do it yourself :-)
I gave it a shot. See attached patch. Like the last patch, this probably
needs revision.
Kind regards,
Jan
[-- Attachment #2: dbus-register-service.patch --]
[-- Type: text/x-patch, Size: 8026 bytes --]
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: jan.moringen@uni-bielefeld.de-20110105040922-\
# vc2ma9x9190gle92
# target_branch: bzr://bzr.savannah.gnu.org/emacs/trunk/
# testament_sha1: 951371c07f78adb5726378a78265e35c8e00f263
# timestamp: 2011-01-05 05:09:46 +0100
# base_revision_id: ken.manheimer@gmail.com-20110104195021-\
# 1x68s956czngphh2
#
# Begin patch
=== modified file 'doc/misc/dbus.texi'
--- doc/misc/dbus.texi 2011-01-04 12:38:33 +0000
+++ doc/misc/dbus.texi 2011-01-05 04:09:22 +0000
@@ -1491,6 +1491,16 @@
to the service from D-Bus.
@end defun
+@defun dbus-register-service bus service
+Register the known name @var{service} on D-Bus @var{bus}.
+
+@var{bus} is either the symbol @code{:system} or the symbol
+@code{:session}.
+
+@var{service} is the service name to be registered on the D-Bus. It
+must be a known name.
+@end defun
+
@defun dbus-unregister-service bus service
Unregister all objects from D-Bus @var{bus}, registered by Emacs for
@var{service}.
=== modified file 'etc/NEWS'
--- etc/NEWS 2011-01-04 16:57:45 +0000
+++ etc/NEWS 2011-01-05 04:09:22 +0000
@@ -558,7 +558,9 @@
system or session bus.
*** dbus-register-{method,property} do not necessarily register names anymore.
-
+*** New function dbus-register-service
+ Register a service known name on a D-Bus without simultaneously
+ registering a property or a method
** Tramp
*** There exists a new inline access method "ksu" (kerberized su).
=== modified file 'src/ChangeLog'
--- src/ChangeLog 2011-01-04 11:11:43 +0000
+++ src/ChangeLog 2011-01-05 04:09:22 +0000
@@ -1,3 +1,14 @@
+2011-01-05 Jan Moringen <jmoringe@techfak.uni-bielefeld.de>
+
+ Added function dbus-register-service in dbusbind.c
+ * dbusbind.c (Qdbus_register_service): new variable; holds
+ function dbus-register-service
+ (Fdbus_register_service): new function; register a service known
+ name on a D-Bus
+ (Fdbus_register_method): use Fdbus_register_service to register
+ the service name
+ (syms_of_dbusbind): added symbol `dbus-register-service'
+
2011-01-04 Jan Moringen <jan.moringen@uni-bielefeld.de>
* dbusbind.c (Fdbus_register_method): Added optional parameter
=== modified file 'src/dbusbind.c'
--- src/dbusbind.c 2011-01-04 11:11:43 +0000
+++ src/dbusbind.c 2011-01-05 04:09:22 +0000
@@ -38,6 +38,7 @@
Lisp_Object Qdbus_method_return_internal;
Lisp_Object Qdbus_method_error_internal;
Lisp_Object Qdbus_send_signal;
+Lisp_Object Qdbus_register_service;
Lisp_Object Qdbus_register_signal;
Lisp_Object Qdbus_register_method;
@@ -1835,6 +1836,43 @@
xd_in_read_queued_messages = 0;
}
+DEFUN ("dbus-register-service", Fdbus_register_service, Sdbus_register_service,
+ 2, 2, 0,
+ doc: /* Register known name SERVICE on the D-Bus BUS.
+
+BUS is either a Lisp symbol, `:system' or `:session', or a string
+denoting the bus address.
+
+SERVICE is the D-Bus service name that should be registered. It must
+be a known name.
+
+Return nil.*/)
+ (Lisp_Object bus, Lisp_Object service)
+{
+ DBusConnection *connection;
+ int result;
+ DBusError derror;
+
+ /* Check parameters. */
+ CHECK_STRING (service);
+
+ /* Open a connection to the bus. */
+ connection = xd_initialize (bus, TRUE);
+
+ /* Request the known name from the bus. We can ignore the result,
+ it is set to -1 if there is an error - kind of redundancy. */
+ dbus_error_init (&derror);
+ result = dbus_bus_request_name (connection, SDATA (service), 0, &derror);
+ if (dbus_error_is_set (&derror))
+ XD_ERROR (derror);
+
+ /* Cleanup. */
+ dbus_error_free (&derror);
+
+ /* Return object. */
+ return Qnil;
+}
+
DEFUN ("dbus-register-signal", Fdbus_register_signal, Sdbus_register_signal,
6, MANY, 0,
doc: /* Register for signal SIGNAL on the D-Bus BUS.
@@ -2028,18 +2066,8 @@
/* Open a connection to the bus. */
connection = xd_initialize (bus, TRUE);
- /* Request the known name from the bus. We can ignore the result,
- it is set to -1 if there is an error - kind of redundancy. */
- if (NILP (dont_register_service))
- {
- dbus_error_init (&derror);
- result = dbus_bus_request_name (connection, SDATA (service), 0, &derror);
- if (dbus_error_is_set (&derror))
- XD_ERROR (derror);
-
- /* Cleanup. */
- dbus_error_free (&derror);
- }
+ /* Request the name. */
+ Fdbus_register_service (bus, service);
/* Create a hash table entry. We use nil for the unique name,
because the method might be called from anybody. */
@@ -2091,6 +2119,10 @@
staticpro (&Qdbus_send_signal);
defsubr (&Sdbus_send_signal);
+ Qdbus_register_service = intern_c_string ("dbus-register-service");
+ staticpro (&Qdbus_register_service);
+ defsubr (&Sdbus_register_service);
+
Qdbus_register_signal = intern_c_string ("dbus-register-signal");
staticpro (&Qdbus_register_signal);
defsubr (&Sdbus_register_signal);
# Begin bundle
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
LPS36A==
next prev parent reply other threads:[~2011-01-05 4:17 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-01-02 21:06 DBus methods without name grabbing Jan Moringen
2011-01-03 12:55 ` Michael Albinus
2011-01-04 2:42 ` Jan Moringen
2011-01-04 10:10 ` Michael Albinus
2011-01-04 10:29 ` Jan Moringen
2011-01-04 13:09 ` Michael Albinus
2011-01-05 4:17 ` Jan Moringen [this message]
2011-01-05 11:45 ` Michael Albinus
2011-01-08 5:48 ` Jan Moringen
2011-01-09 9:42 ` Michael Albinus
2011-01-09 16:08 ` Jan Moringen
2011-01-10 11:40 ` Michael Albinus
[not found] ` <1294201048.2508.1.camel@gunhead>
2011-01-05 10:46 ` Jan Moringen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=26843_1294201050_ZZh0g3doKzQB1.00_1294201048.2508.1.camel@gunhead \
--to=jan.moringen@uni-bielefeld.de \
--cc=emacs-devel@gnu.org \
--cc=michael.albinus@gmx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).