Commit graph

1974 commits

Author SHA1 Message Date
John (J5) Palmieri
08bbc0210c * remove line from ChangeLog which was an artifact of an update conflict 2006-02-15 21:44:11 +00:00
John (J5) Palmieri
b1aa8a0baf 2006-02-15 John (J5) Palmieri <johnp@redhat.com>
* dbus/dbus-glib.h:
	* glib/dbus-gmain.h:
	(dbus_g_connection_open): new method for openning
	a connection to an arbitrary address in the glib bindings

	* ChangeLog: checkin last entry which doesn't seem to be commited
2006-02-15 21:42:54 +00:00
Thiago Macieira
9076938fc0 Add new tests and update the existing one. 2006-02-15 17:06:41 +00:00
Havoc Pennington
345671f75c add dispatch recursion item to TODO 2006-02-15 16:38:11 +00:00
Thiago Macieira
c2432800b1 Merge the changes to the bindings from the KDE Subversion server.
This is a major change: library is source- and binary-incompatible to
what it used to be.

All testcases are green, functionality is preserved.

It is not feature-complete. Development will continue in the branch in the
Subversion server for a while.
2006-02-15 16:25:12 +00:00
Thiago Macieira
120d4ae484 Unclutter and upgrade the test to Qt 4.1. We now link to QtXml too. 2006-02-15 16:21:59 +00:00
Robert McQueen
4a48fff0c7 2006-02-13 Robert McQueen <robot101@debian.org>
* glib/dbus-binding-tool-glib.c, glib/dbus-gmain.c,
	glib/dbus-gsignature.c, glib/dbus-gtype-specialized.c,
	glib/dbus-gtype-specialized.h, glib/dbus-gvalue-utils.c,
	glib/dbus-gvalue-utils.h, glib/dbus-gvalue.c:
	Patch from Rob Taylor <rob.taylor@collabora.co.uk> to add a big
	missing piece of the glib bindings jigsaw puzzle. This modifies
	the existing specialised types to have N type parameters (rather
	than the current 1 or 2 for arrays and dictionaries respectively).
	You can then use this to get a glib type to represent any arbitrary
	D-Bus struct type using dbus_g_type_get_struct. The only
	implementation of these types is with GValueArrays as before,
	but it's now possible to store these in arrays, emit them in
	signals, etc.
2006-02-13 22:30:11 +00:00
John (J5) Palmieri
385c443cc7 2006-02-13 John (J5) Palmieri <johnp@redhat.com>
* tools/dbus-launch.c: Fixed sh syntax output
2006-02-13 21:01:32 +00:00
John (J5) Palmieri
13a283b705 2006-02-10 John (J5) Palmieri <johnp@redhat.com>
* dbus/dbus-signature.c (dbus_signature_iter_recurse): Correctly
	deal with nested arrays (Bug #5823) Patch by Thiago Macieira
	<thiago.macieira at trolltech.com>
2006-02-10 22:36:57 +00:00
John (J5) Palmieri
3ebf7e7700 2006-02-10 John (J5) Palmieri <johnp@redhat.com>
* mono/doc/Makefile.am: Fix parallel make problem with mono-doc
	(Bug #4213) Patch from Doug Goldstein <cardoe at gentoo.org>
2006-02-10 21:47:10 +00:00
John (J5) Palmieri
34bb5b690b 2006-02-10 John (J5) Palmieri <johnp@redhat.com>
* bus/connection.c (bus_connections_expect_reply): Make
	pending reply limit not common to all connections (Bug #5416)
	Patch from Kimmo Hämäläinen <kimmo.hamalainen at nokia.com>
2006-02-10 21:44:15 +00:00
John (J5) Palmieri
8fcc91bf0b 2006-02-10 John (J5) Palmieri <johnp@redhat.com>
* tools/dbus-launch.c: Fixed csh syntax output (Bug #5720)
2006-02-10 21:28:52 +00:00
John (J5) Palmieri
d7580d7bd6 2006-02-10 John (J5) Palmieri <johnp@redhat.com>
* gcj/Makefile.am: point to correct jar command (Bug #4529)
	patch from Doug Goldstein <cardoe at gentoo.org>
2006-02-10 20:57:10 +00:00
Joe Shaw
cbe0956998 2006-02-09 Joe Shaw <joeshaw@novell.com
* mono/Arguments.cs: Fix a magic number in the mono bindings
	that doesn't work on 64 bit arches.  Patch from Peter Johanson.
2006-02-09 19:57:42 +00:00
Robert McQueen
2b5e0615cf 2006-01-27 Robert McQueen <robot101@debian.org>
* glib/dbus-binding-tool-glib.[ch]: Patch based on Ricardo Kekki's
	patch to use an annotation org.freedesktop.DBus.GLib.ClientCSymbol
	when generating the client-side methods, instead of overloading
	CSymbol which broke everything horribly. My apologies.
2006-01-27 16:40:54 +00:00
Robert McQueen
8e00b10d13 2006-01-27 Robert McQueen <robot101@debian.org>
* glib/dbus-gtype-specialized.[ch], glib/dbus-gvalue-utils.c: Patch
	by me and Rob Taylor to add a simple_free function to D-Bus map
	and collection types, which allows those types which can be freed
	with a GDestroyNotify (such as GHashTables and GArrays, but not
	GPtrArrays) to be stored as the values in hashtables.

	* test/glib/test-dbus-glib.c, test/glib/test-service-glib.{c,xml}:
	Patch by Rob Taylor to add nested dicts to the glib tests to check
	the above code works, and appears not to leak when called repeatedly.
2006-01-27 15:40:36 +00:00
Robert McQueen
ce13b5dff7 2006-01-27 Robert McQueen <robot101@debian.org>
* glib/dbus-gvalue.c (demarshal_valuearray): Patch from Rob Taylor
	to free a D-Bus allocated string with dbus_free () instead of
	g_free ().
2006-01-27 15:15:16 +00:00
Robert McQueen
6a48e47424 2006-01-27 Iain Holmes <iain@openedhand.com>
* glib/dbus-gproxy.c (dbus_g_proxy_dispose): Protect the dispose
	method from being called multiple times.
2006-01-27 15:06:55 +00:00
Harald Fernengel
25799b8197 compile on 64-bit systems 2006-01-22 19:45:14 +00:00
Harald Fernengel
e447b1f2be convert to QTestLib 4.1 2006-01-22 19:42:18 +00:00
Harald Fernengel
52d4364f90 allow linking to debug Qt libraries, use QTestLib >= 4.1 2006-01-22 19:42:00 +00:00
Robert McQueen
7824581660 2006-01-19 Robert McQueen <robot101@debian.org>
* glib/dbus-binding-tool-glib.c: Patch from Rob Taylor
	<rob.taylor@collabora.co.uk> to add support for generating bindings
	to arrays that are represented as GPtrArrays rather than GArrays (ie
	size-variable things, such as strings, objects, structs, etc).
2006-01-19 02:54:07 +00:00
Robert McQueen
ec45ff4389 2006-01-05 Robert McQueen <robot101@debian.org>
* dbus/dbus-glib.h, glib/dbus-gproxy.c: Patch from Ricardo Kekki
	<ricardo.kekki@movial.fi> to make it possible to inherit from
	DBusGProxy, by splitting the DBusGProxy struct into a public part and
	a private part, and moving the setting of the DBusGProxyManager into a
	connection property, allowing proper GObject construction.
2006-01-05 20:22:06 +00:00
Robert McQueen
36e234a11a 2006-01-05 Robert McQueen <robot101@debian.org>
* glib/dbus-binding-tool-glib.c: Patch from Ricardo Kekki
	<ricardo.kekki@movial.fi> to make dbus-binding-tool heed C symbol name
	annotations when generating glib client bindings.
2006-01-05 20:03:38 +00:00
John (J5) Palmieri
f3358b8da7 * dbus/dbus-shared.h: Call it shared constants instead of shared macros
* dbus/dbus-protocol.h: add DOxygen markup to quiet warnings
2005-12-19 23:58:22 +00:00
John (J5) Palmieri
ba8bd930b3 - Add doxygen markup to quite warnings 2005-12-19 23:45:13 +00:00
John (J5) Palmieri
bbe32213d2 * dbus/dbus-macros.h: correct DOxygen end of section (s/}@/@}) 2005-12-19 22:06:24 +00:00
Ross Burton
f72c693f48 Add documentation on glib client bindings and annotations 2005-12-19 18:11:05 +00:00
John (J5) Palmieri
1ae3003571 * dbus/bus.c (dbus_bus_release_name): Add documentation 2005-12-19 15:11:51 +00:00
Robert McQueen
fa839632c4 2005-12-06 Robert McQueen <robot101@debian.org>
* python/service.py: s/sucessful/successful/ so we're allocating to
	and reading from the same variable. Oops.
2005-12-06 12:38:07 +00:00
Havoc Pennington
11f75c69e7 fix file list in update-dbus-docs.sh 2005-12-01 05:42:03 +00:00
John (J5) Palmieri
b99a1f3645 * test/qt/Makefile.am: build from srcdir
* qt/qtconnection.cpp (requestName): Changed PROHIBIT_REPLACE to ALLOW_REPLACE
  Note - this code is wrong and needs to be fixed by the Qt binding
  developers.  The flags should be treated as bitfields and not enums.

* qt/qtconnection.h: Change ProhibitReplace to AllowReplace

* dbus/dbus-list.c (link_after): remove #ifdef DBUS_BUILD_TESTS
2005-12-01 00:07:20 +00:00
John (J5) Palmieri
e5118f163d * dbus/dbus-list.c (_dbus_list_insert_after_link, _dbus_list_insert_after):
remove #ifdef DBUS_BUILD_TESTS since we use these methods in production code
2005-11-30 21:23:12 +00:00
John (J5) Palmieri
263d1dfdd4 * dbus/dbus-connection.c (dbus_connection_read_write): Add new
method for getting messages off the bus in the absence of a
  mainloop.  This method is much like
  dbus_connection_read_write_dispatch except it does not dispatch
  the messages to a registered filter function.  Instead it
  allows a developer to process messages by directly popping
  them off the bus.
2005-11-30 20:30:02 +00:00
John (J5) Palmieri
9825929920 * bus/desktop-file.c (parse_key_value): Ignore locales allowing
the parser to continue instead of returning error
  (bus_desktop_file_load): Do not free parser data when
  parse_section_start or parse_key_value fails because it was
  already freed by parser_free (patch from Carlos Garcia Campos
  <carlosgc at gnome.org>)
2005-11-30 20:14:30 +00:00
John (J5) Palmieri
0ca96ec548 * dbus/dbus-auth.c, dbus/dbus-connection.c, dbus/dbus-keyring.c,
dbus/dbus-server-debug-pipe.c, glib/dbus-binding-tool-glib.c
  glib/dbus-glib-tool.c, glib/dbus-gparser.c, glib/dbus-gproxy.c
  test/test-segfault.c, test/test-utils.c,
  test/glib/test-dbus-glib.c, tools/dbus-cleanup-sockets.c
  tools/dbus-launch.c, tools/dbus-tree-view.c, tools/dbus-viewer.c:
  Various cleanup of dead code and compiler warnings (patch from
  Kjartan Maraas <kmaraas at gnome.org>)
2005-11-30 19:32:27 +00:00
John (J5) Palmieri
111118fd8a * glib/dbus-gmain.c (connection_setup_add_watch): plugged a leak
(patch from Carlos Garnacho Parro <carlosg at gnome.org>
2005-11-30 18:48:11 +00:00
Robert McQueen
3bcfd003b6 2005-11-27 Robert McQueen <robot101@debian.org>
* python/dbus_bindings.pyx: Repair my previous commit which reverted
	part of the preceding one. Oops. Merge patch by Johan Hedberg
	<johan.hedberg@nokia.com> to fix marshalling of 16-bit integer values
	on big-endian platforms.

	* test/python/test-client.py: Add some 16-bit integers to the test
	values.
2005-11-27 17:44:19 +00:00
Robert McQueen
75d6182c05 2005-11-27 Carlos Garcia Campos <carlosgc@gnome.org>
* glib/dbus-gobject.c: Append a GValue instead of a basic type in
	method return message for property getters
2005-11-27 16:55:09 +00:00
Robert McQueen
c77c7e343b 2005-11-27 Robert McQueen <robot101@debian.org>
* python/dbus_bindings.pyx: Fix a bug where doing a strict append
	with type v of an instance of dbus.Variant(foo, type='x') caused
	it to be boxed twice before sending over the bus.

	* python/dbus_bindings.pyx, python/service.py,
	test/python/test-client.py: Update the constants for the new
	request_name flags, and update comments/test cases now that queueing
	is the default action.
2005-11-27 16:40:57 +00:00
John (J5) Palmieri
caecde624d * configure.in:
- Change version to 0.60 for impending release
- upped the sonames because of ABI and API breakage
2005-11-22 20:42:49 +00:00
John (J5) Palmieri
1a163e765c * configure.in: Add test/name-test/Makefile to the generated
Makefile list

	* dbus/dbus-shared.h (#define DBUS_NAME_FLAG_ALLOW_REPLACEMENT):
	New flag which replaces DBUS_NAME_FLAG_PROHIBIT_REPLACEMENT
	(#define DBUS_NAME_FLAG_DO_NOT_QUEUE): New flag for specifying
	not to queue an ower if it can't be the primary owner

	* bus/bus.h: Add new internal BusOwner struct

	* bus/driver.c (bus_driver_handle_hello): Send flags (0 for default)
	to bus_registry_ensure and don't set the prohibit_replacement flag
	since they are now set per BusOwner and not per name.
	(bus_driver_handle_list_queued_owners): bus method (ListQueuedOwners)
	that returns the list of connections in a name's connection queue

	* bus/services.c (struct BusService): remove prohibit_replacement field
	(struct BusOwner): new struct for keeping track of queued connections
	and their associated flags for the queue
	(struct BusRegistry): add a BusOwner memory pool
	(bus_registry_new): initialize the BusOwner memory pool
	(bus_registry_unref): free the BusOwner memory pool
	(_bus_service_find_owner_link): new internal method for
	searching the queue for a specific connection
	(bus_owner_set_flags): new method for adding setting the flags on a
	bus owner
	(bus_owner_new): new method that creates a BusOwner object from the
	pool and sets its flags
	(bus_owner_ref, bus_owner_unref): ref counting for BusOwner objects
	(bus_registry_ensure): Add the flags parameter
	(bus_registry_acquire_service): Switch from using raw connections to
	using the BusOwner struct
	Add new state machine for dealing with the new set of flags
	(bus_registry_set_service_context_table, struct OwnershipCancelData,
	cancel_ownership, free_ownership_cancel_data,
	add_cancel_ownership_to_transaction, struct OwnershipRestoreData,
	restore_ownership, free_ownership_restore_data,
	add_restore_ownership_to_transaction): Switch to using BusOwner
	instead of raw connections
	(bus_service_add_owner): Add flags parameter
	Switch to using BusOwner instead of raw connections
	Add state machine for dealing with the new set of flags
	(bus_service_swap_owner): Swaps the first and second owners in the
	queue.  Used to make sure proper signals are sent when a service looses
	or gains primary ownership.  We never insert an owner at the top of the
	queue.  Instead we insert it in the second position and then swap.
	(bus_service_remove_owner): Remove the owner from the queue sending
	out the NameLost and NameOwnerChanged signals if the we were the
	primary owner
	(bus_service_get_primary_owners_connection): New method that extracts
	the connection from the primary owner
	(bus_service_get_primary_owner): Returns the BusOwner instead of the
	connection
	(bus_service_get_allow_replacement): Changed from the old
	bus_service_get_prohibit_replacement method.  Checks the flags of the
	primary owner and returns if it can be replaced or not
	(bus_service_set_prohibit_replacement): removed
	(bus_service_has_owner): returns TRUE if and owner with
	the specified connection exists in the queue

	* dbus/dbus-bus.c (dbus_bus_connection_get_unique_name): New helper
	method that only compiles if tests are enabled.  Allows us to get the
	unique name of a connection so we can check it against the queue when
	doing regression tests

	* bus/activation.c (bus_activation_send_pending_auto_activate),
	bus/dispatch.c (bus_dispatch),
	bus/driver.c (bus_driver_handle_get_service_owner,
	bus_driver_handle_get_connection_unix_user,
	bus_driver_handle_get_connection_unix_process_id,
	bus_driver_handle_get_connection_selinux_security_context),
	bus/signals.c (connection_is_primary_owner):
	use bus_service_get_primary_owners_connection instead of
	bus_service_get_primary_owner

	* dbus/dbus-sysdeps.c (_dbus_connect_unix_socket,
	_dbus_listen_unix_socket): Calculate the length of the socket
	path and use that instead of using a fixed length which was
	causing socket names to contain many trailing Nul bytes.

	* dbus/dbus-glib-lowlevel.h, glib/dbus-gobject.c
	(dbus_g_method_get_sender): New method for extracting the sender
	from a DBusGMethodInvocation
	(dbus_g_method_return_get_reply): changed name to
	dbus_g_method_get_reply
	(dbus_g_method_return_send_reply): changed name to
	dbus_g_method_send reply

	* doc/dbus-specification.xml: New docs that describe how the new
	queueing system works and talks about the changes to the how
	we specify socket names

	* glib/examples/example-service.c,
	glib/examples/example-signal-emitter.c,
	glib/examples/statemachine/statemachine-server.c:
	Changed the RequestName flags to the new system

	* test/name-test/ (test-names.c, run-test.sh, Makefile.am): New
	regression test suite for testing various states of the new
	queueing system
2005-11-22 20:37:00 +00:00
Robert McQueen
c33af17b93 2005-11-15 Robert McQueen <robot101@debian.org>
* dbus/dbus-glib-lowlevel.h, glib/dbus-gobject.c: Patch from Rob
	Taylor to add two methods, dbus_g_method_return_get_reply and
	dbus_g_method_return_send_reply, to allow you to get the reply
	message from a DBusGMethodInvocation, append arbitrary stuff to it,
	and send it. The GLib bindings can't marshal a return value of
	something like a(s) if the array is empty - ultimately they should be
	made to heed the signature of the out arguments as the Python bindings
	now can, but this is a workable interim solution which might have
	other applications.
2005-11-15 19:34:33 +00:00
Robert McQueen
b5e4d26ade 2005-11-15 Robert McQueen <robot101@debian.org>
* bus/driver.c, bus/services.c, bus/services.h: Add a ReleaseName
	method to org.freedesktop.DBus to release a bus name or give up
	waiting in the queue for it.

	* dbus/dbus-bus.c, dbus/dbus-bus.h, dbus/dbus-shared.h: Add a
	dbus_bus_release_name method to send the ReleaseName method calls.
	Add constants for the return values to dbus/dbus-shared.h.

	* doc/dbus-specification.xml: Document the new ReleaseName method
	in the specification.

	* python/dbus_bindings.pyx: Add a low-level python binding for the
	release name method.

	* python/exceptions.py, python/service.py: Make freeing BusName
	objects release the name. Add a NameExistsException, and fix a
	bug with creating UnknownMethodException.

	* test/python/test-client.py: Add tests for freeing BusName
	objects causing names to be released.
2005-11-15 17:19:19 +00:00
Robert McQueen
d4595960e9 2005-11-15 Robert McQueen <robot101@debian.org>
* python/service.py: Include the traceback in the error reply when we
	send an exception over the bus. _BEST_ _PATCH_ _EVER_
2005-11-14 20:59:32 +00:00
David Zeuthen
5e948ff7cd 2005-11-14 David Zeuthen <davidz@redhat.com>
Patch from Timo Hoenig <thoenig@suse.de>.

        * bus/bus.c: I've recently investigated why the automatic reload
        of configuration files does not work as expected.

        Currently, reloading configuration files does only work when
        running dbus-daemon with --nodaemon.  If we are running as daemon
        we're hitting a dnotify bug once we fork the process.

        We're initializing the dnotify fds before calling fork().  Once
        the child process forked it does still have the fds (and they
        still show up in /proc/`pidof dbus-daemon`/fd/) but we're not
        getting SIGIO as changes are made to the configuration files.

        The attached patch moves the initialization of the dnotify fds to
        process_config_postinit().  This is safe for all current code
        paths and solves the dnotify disfunction.  If we're running
        dbus-daemon as daemon the fds for dnotify are now being
        initialized after fork() for the child process.

        * configure.in: The current configure.in check for dnotify probes
        'x$target_os' for being 'xlinux-gnu'.  I've changed the check to
        match for 'xlinux', too. Additionally I have adapted the configure
        option's style to match with the others.
2005-11-14 20:51:25 +00:00
Robert McQueen
7b9236f2ae 2005-11-14 Robert McQueen <robot101@debian.org>
* python/decorators.py, python/service.py: Add a new argument to the
	dbus.service.method decorator called sender_keyword, which if set,
	specifies the name of an argument which will be provided the bus
	name of the method caller.

	* test/python/test-client.py, test/python/test-service.py: Add a
	method and test to check the sender_keyword functionality.
2005-11-14 02:53:30 +00:00
John (J5) Palmieri
45ef0fbc4f * bus/driver.c (bus_driver_handle_reload_config): Make sure we send an
empty reply so blocking calls don't block forever (Patch from Sjoerd
  Simons <sjoerd at luon.net>)

* AUTHORS: Add Robert McQueen for his work on the Python
  Bindings and other parts of D-Bus
2005-11-07 21:57:13 +00:00
Robert McQueen
e598c5edc5 2005-11-07 Robert McQueen <robot101@debian.org>
* python/decorators.py: Change emit_signal function to use the
	signature annotation of the signal when marhsalling the arguments from
	the service. Fix a bug where the code checking signature length
	against argument length referenced the wrong variable.

	* python/introspect_parser.py: Avoid adding the type signature of
	signal arguments to any methods which occur after them in the
	introspection data (!) by making the parser a little more careful
	about its current state.

	* python/service.py: Remove debug prints from last commit (again :D).

	* test/python/test-client.py, test/python/test-service.py: Add test
	signals with signature decorators to test the strict marshalling code
	gives errors at the right time. Could do with checking the signals
	actually get emitted too, given that the test does nothing with
	signals at the moment...
2005-11-07 15:31:30 +00:00
Robert McQueen
95f9771d6b 2005-11-07 Robert McQueen <robot101@debian.org>
* python/_dbus.py: Add WeakReferenceDictionary cache of dbus.Bus
	instances to stop madness of creating new instances representing
	the same bus connection all the time, rendering any tracking of
	match rules and bus names quite meaningless. Caught a bug where
	the private argument to SessionBus() and friends was being passed
	in as use_default_mainloop by mistake. Still some problems with
	multiple dbus_binding.Connection instances representing the same
	low-level connection (eg when you use both SessionBus() and
	StarterBus() in same process), but it's a lot better now than it
	was.

	* python/dbus_bindings.pyx: Add constants with the return values
	for bus_request_name().

	* python/service.py: Store bus name instances in a per-dbus.Bus cache
	and retrieve the same instances for the same name, so deletion can be
	done with refcounting. Also now throws some kind of error if you
	don't actually get the name you requested, unlike previously...

	* test/python/test-client.py: Add tests for instance caching of buses
	and bus name objects.
2005-11-07 12:14:53 +00:00