1. 22 Nov, 2005 1 commit
    • John Palmieri's avatar
      * configure.in: Add test/name-test/Makefile to the generated · 1a163e76
      John Palmieri authored
      	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
      1a163e76
  2. 15 Nov, 2005 2 commits
    • Robert McQueen's avatar
      2005-11-15 Robert McQueen <robot101@debian.org> · c33af17b
      Robert McQueen authored
      	* 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.
      c33af17b
    • Robert McQueen's avatar
      2005-11-15 Robert McQueen <robot101@debian.org> · b5e4d26a
      Robert McQueen authored
      	* 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.
      b5e4d26a
  3. 14 Nov, 2005 3 commits
    • Robert McQueen's avatar
      2005-11-15 Robert McQueen <robot101@debian.org> · d4595960
      Robert McQueen authored
      	* python/service.py: Include the traceback in the error reply when we
      	send an exception over the bus. _BEST_ _PATCH_ _EVER_
      d4595960
    • David Zeuthen's avatar
      2005-11-14 David Zeuthen <davidz@redhat.com> · 5e948ff7
      David Zeuthen authored
              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.
      5e948ff7
    • Robert McQueen's avatar
      2005-11-14 Robert McQueen <robot101@debian.org> · 7b9236f2
      Robert McQueen authored
      	* 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.
      7b9236f2
  4. 07 Nov, 2005 3 commits
    • John Palmieri's avatar
      * bus/driver.c (bus_driver_handle_reload_config): Make sure we send an · 45ef0fbc
      John Palmieri authored
        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
      45ef0fbc
    • Robert McQueen's avatar
      2005-11-07 Robert McQueen <robot101@debian.org> · e598c5ed
      Robert McQueen authored
      	* 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...
      e598c5ed
    • Robert McQueen's avatar
      2005-11-07 Robert McQueen <robot101@debian.org> · 95f9771d
      Robert McQueen authored
      	* 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.
      95f9771d
  5. 04 Nov, 2005 1 commit
    • Robert McQueen's avatar
      2005-11-04 Robert McQueen <robot101@debian.org> · ac361495
      Robert McQueen authored
              * python/dbus_bindings.pyx, test/python/test-client.py: Fix
              marshalling of boolean values. Add some booleans to the values in
              the test client.
      
              * python/decorators.py, python/service.py: Add an 'async_callbacks'
              argument to the dbus.service.method decorator, which allows you to
              name arguments to take two callback functions for replying with
              return values or an exception.
      
              * test/python/test-client.py, test/python/test-service.py: Add test
              case using asynchronous method reply functions, both return values and
              errors, and from within both the function itself and from a mainloop
              callback.
      
              * python/decorators.py, python/service.py: Perform checking that the
              number of method/signal arguments matches the number of types in the
              signature at class loading time, not when you first introspect the
              class.
      
              * python/service.py: Remove debug print left by the last commit.
      ac361495
  6. 03 Nov, 2005 2 commits
    • Robert McQueen's avatar
      2005-11-03 Robert McQueen <robot101@debian.org> · e20c311b
      Robert McQueen authored
              * python/service.py: Heavy refactoring of method invocation, with
              hopefully no effect on functionality. Nuked _dispatch_dbus_method_call
              in favour of a new _message_cb that uses seperate functions for
              looking up the method to call, marshalling the return values, and
              sending exceptions as errors, and is easier to follow as a
              consequence.  Fixes some corner cases about returning things that
              don't match your declared out_signature, allows exceptions to define
              _dbus_error_name and have it be sent over the bus as the error name,
              and paves the way for cool stuff like heeding the message no reply
              flag, asynchronous method implementations, informing the method of the
              sender, and including backtraces in the error messages.
      
              * test/python/test-client.py: Catch and print exceptions thrown in the
              async callback tests, rather than passing them to the low-level
              bindings to be ignored in a noisy and frustrating manner.
      e20c311b
    • Robert McQueen's avatar
      2005-11-03 Robert McQueen <robot101@debian.org> · 9d0ab378
      Robert McQueen authored
              * python/_dbus.py, python/proxies.py, python/service.py: Add __repr__
              functions to dbus.Bus, dbus.service.BusName and dbus.service.Object,
              tweak others to be consistent.
      
              * test/python/test-client.py: Tweak output of testInheritance.
      9d0ab378
  7. 29 Oct, 2005 4 commits
    • Robert McQueen's avatar
      2005-10-29 Robert McQueen <robot101@debian.org> · a4b1aa36
      Robert McQueen authored
              * python/service.py: Major changes to allow multiple inheritance
              from classes that define D-Bus interfaces:
      
               1. Create a new Interface class which is the parent class of
                  Object, and make the ObjectType metaclass into InterfaceType.
      
               2. Patch written with Rob Taylor to replace use of method_vtable
                  with code that walks the class's __MRO__ (method resolution order)
                  to behave like Python does when invoking methods and allow
                  overriding as you'd expect. Code is quite tricky because
                  we have to find two methods, the one to invoke which has the
                  right name and isn't decorated with the /wrong/ interface,
                  and the one to pick up the signatures from which is decorated
                  with the right interface.
      
                  The same caveats apply as to normal multiple inheritance -
                  this has undefined behaviour if you try and inherit from two
                  classes that define a method with the same name but are
                  decorated with different interfaces. You should decorate
                  your overriding method with the interface you want.
      
               3. Replace grungy introspection XML generation code in the metaclass
                  with dictionaries that cope correctly with multiple inheritance
                  and the overriding of methods. This also uses the signature
                  decorations to provide correct introspection data, including
                  the debut appearance of the types of your return values. :D
      
              * test/python/test-client.py, test/python/test-service.py: Add a test
              case to try invoking an method that overrides one inherited from a
              D-Bus interface class.
      a4b1aa36
    • Robert McQueen's avatar
      2005-10-29 Robert McQueen <robot101@debian.org> · 6fbd1c7f
      Robert McQueen authored
              * python/dbus_bindings.pyx: Tweak 'raise AssertionError' to assert().
              Add checking for the end of struct character when marshalling a
              struct in MessageIter.append_strict.
      
              * python/examples/example-service.py,
              python/examples/gconf-proxy-service.py,
              python/examples/gconf-proxy-service2.py: Update to use gobject
              mainloop directly rather than appearing to depend on gtk.
      
              * python/test/test-client.py, python/test/test-server.py: Remove
              obsolete and broken test scripts for old bindings. We have up to date
              and working tests in test/python/.
      6fbd1c7f
    • Robert McQueen's avatar
      2005-10-29 Robert McQueen <robot101@debian.org> · 20bcbaf2
      Robert McQueen authored
              * python/decorators.py: Add optional arguments to the method and
              signal decorators to allow you to specify the signature of arguments
              and return values. Preserve the doc strings of signal functions in the
              decorated version, for pydoc and friends.
      
              * python/dbus_bindings.pyx, python/proxies.py: Replace the
              parse_signature_block function with an iterable dbus.Signature()
              type. Fix a bug in MessageIter.append_strict where you could append
              anything by claiming it was a string.
      
              * python/service.py: Use the out_signature decoration on methods to
              marshal return values, meaning you no longer require dbus.Array()
              or dbus.Dictionary() to indicate the type when returning empty
              arrays or dictionaries. Fix a bug where exceptions which are defined
              in __main__ are not turned into error replies.
      
              * test/python/test-client.py, test/python/test-service.py: Add test
              for correct marshalling of return values according to out_signature.
              Fix a bug in the async call test where the error_handler is missing a
              self argument.
      20bcbaf2
    • Robert McQueen's avatar
      2005-10-29 Robert McQueen <robot101@debian.org> · 2d74492b
      Robert McQueen authored
              * glib/Makefile.am, glib/examples/Makefile.am,
              glib/examples/statemachine/Makefile.am: Merge patch from Ubuntu by
              Daniel Stone to replace explicit calls to libtool with $(LIBTOOL).
      
              * test/python/.cvsignore: Add run-with-tmp-session-bus.conf.
      
              * tools/dbus-monitor.1, tools/dbus-monitor.c: Merge dbus-monitor patch
              from Ubuntu by Daniel Silverstone to allow specifying match rules on
              the command line.
      2d74492b
  8. 27 Oct, 2005 1 commit
  9. 25 Oct, 2005 2 commits
  10. 24 Oct, 2005 1 commit
    • Robert McQueen's avatar
      2005-10-24 Robert McQueen <robot101@debian.org> · ef47e01f
      Robert McQueen authored
          * python/dbus_bindings.pyx (String, MessageIter): make D-Bus strings
          derive from unicode instead of str, and encode/decode UTF-8 when
          marshalling/unmarshalling bus messages
      
          * python/introspect_parser.py: encode introspection data as UTF-8
          before passing the buffer into libxml2
      
          * test/python/test-client.py: add unicode test strings
      
          * test/data/valid-service-files/.cvsignore, test/python/.cvsignore:
          ignore generated python test files
      ef47e01f
  11. 20 Oct, 2005 1 commit
  12. 18 Oct, 2005 1 commit
    • John Palmieri's avatar
      * glib/dbus-gvalue-utils.c (hash_free_from_gtype): handle gdouble · 2b941770
      John Palmieri authored
      and G_TYPE_VALUE_ARRAY (DBUS_TYPE_STRUCT)
      (gvalue_from_hash_value, hash_value_from_gvalue): handle gdouble
      
      * glib/dbus-gvalue.c (dbus_gvalue_to_signature): add missing
      DBUS_STRUCT_BEGIN_CHAR and DBUS_STRUCT_END_CHAR charaters
      when constructing struct signatures
      
      * python/_dbus.py (Bus): handle private connections using the
      private keyword in the constructor. defaults to private=False
      (Bus::close): new method to close a connection to the bus
      
      * python/dbus_bindings.pyx (Connection::close): renamed method
      was previously called disconnect
      (bus_get): now supports getting a private connection
      
      * python/proxies.py (ProxyMethod::__call__): check if ignore_reply
      keyword is set to True.  if it is, execute the method without waiting
      for a reply
      (ProxyObject::_introspect_execute_queue): new method for executing
      all the pending methods that were waiting for the introspect to
      finish.  this is called when introspect either succeeds or fails
      (ProxyObject::_introspect_error_handler): call queued methods
      2b941770
  13. 14 Oct, 2005 1 commit
    • John Palmieri's avatar
      * python/dbus_bindings.pyx (MessageIter::append_strict): check for · 0ae9f138
      John Palmieri authored
        STRUCT_BEGIN not TYPE_STRUCT in indicate we are marshalling a struct
      
      * python/service.py (Object::_message_cb): handle exceptions correctly
        by sending them over the wire to the calling app.  This makes sure
        the client returns immediately instead of waiting the 15 seconds to
        timeout.
      
      * test/python/test-client.py (TestDBusBindings::testBenchmarkIntrospect):
        Add a test to benchmark how long it takes to introspect a service and
        call a method which returns a large element (pretty fast)
      
      * test/python/test-service.py (TestObject::GetComplexArray): new test
        method which pushes a lot of data
      0ae9f138
  14. 13 Oct, 2005 3 commits
  15. 12 Oct, 2005 1 commit
    • John Palmieri's avatar
      patches from Michael Krivoruchko <misha at sun.com>: · 8d2fe987
      John Palmieri authored
      * dbus/dbus-connection.c (_dbus_connection_queue_received_message_link,
      _dbus_connection_message_sent,
      _dbus_connection_send_preallocated_unlocked_no_update,
      _dbus_connection_pop_message_link_unlocked): handle the case when path
      is NULL when calling _dbus_verbose
      
      * configure.in: check for functions getpeerucred and getpeereid
      
      * dbus/dbus-sysdeps.c (_dbus_read_credentials_unix_socket): provides
      support of auth EXTERNAL on Solaris 10+ (getpeerucred), FreeBSD 4.6+,
      OpenBSD 3.0+ and FreeBSD 5.0+ as well as MacOSX 10.2+ (getpeereid).
      Patch was only tested on Solaris 10 x86 so it might be issues
      with other platforms (i.e. BSDs and MacOSX)
      8d2fe987
  16. 06 Oct, 2005 1 commit
  17. 05 Oct, 2005 1 commit
    • John Palmieri's avatar
      * glib/dbus-gvalue.c (marshal_variant): call _dbus_gvalue_marshal · 86b9f6ad
      John Palmieri authored
        instead of marshal basic so we can handle recursive types in a variant
      
      * test/glib/test-dbus-glib.c: Add test for marshaling recurive types
        in variants
      
      * test/glib/test-service-glib.c, test-service-glib.xml
        (my_object_echo_variant [EchoVariant],
        my_object_process_variant_of_array_of_ints123
        [ProcessVariantOfArrayOfInts123]):
        Add two test methods
      
      * python/introspect_parser.py: New module for parsing introspect
        data.
      
      * python/dbus_bindings.pyx:
        (various places): when throwing errors fix to use errormsg instead
        of message local variable because Pyrex can get confused with other
        message variables (initial patch by Robert McQueen
        <robert.mcqueen at collabora.co.uk>)
        (MessageIter::parse_signature_block): new method for getting the next
        block in a signiture.
        (MessageIter::append_strict): new method for appending values strictly
        using the passed in signature instead of guessing at the type
        (MessageItter:: append_dict, append_struct, append_array): use
        signatures to marshal children if the signature is available
      
      * python/exceptions.py (IntrospectionParserException): new exception
      
      * python/proxies.py (ProxyMethod::__call__): Marshal args with
        introspected signatures if available, else we fall back to the
        old way of doing things.
        (ProxyObject::_introspect_reply_handler ): parse introspection data
      
      * python/service.py (ObjectType::_reflect_on_method): Properly
        terminate <method> if there are no args in the reflection data
      
      * test/python/test-client.py: add tests for talking with the GLib
        test server.  This gives us better coverage for introspection since
        python to python will always generate arguments as variants.  It also
        allows us to test the robustness of the GLib bindings and interlanguage
        communications.
      86b9f6ad
  18. 03 Oct, 2005 1 commit
    • John Palmieri's avatar
      * bus/driver.c (bus_driver_handle_introspect): Add signals · 66e1cb9e
      John Palmieri authored
        to the introspect data. (patch from Daniel P. Berrange
        <dan at berrange.com>)
      
      * bus/dispatch.c (check_existent_ping): Add testcase for Ping
      
      * dbus/dbus-connection.c (_dbus_connection_peer_filter,
        _dbus_connection_run_builtin_filters): Changed these to
        be unlock_no_update functions and call
        _dbus_connection_send_unlocked_no_update instead of
        dbus_connection_send to avoid locking errors.
      
      * doc/TODO: Removed the make Ping test TODO
      66e1cb9e
  19. 30 Sep, 2005 4 commits
  20. 26 Sep, 2005 3 commits
  21. 23 Sep, 2005 3 commits