darling-dbuskit/ChangeLog

1964 lines
63 KiB
Plaintext
Raw Normal View History

2013-07-02 Niels Grewe <niels.grewe@halbordnung.de>
* Headers/DKProxy.h
* Source/DKProxy+Private.h
* Source/DKProxy.m:
Expose some DKProxy internals for subclassing.
* Source/DKOutgoingProxy.m: Allow introspection data to be added from a
file (not a public API, though)
2013-07-01 Niels Grewe <niels.grewe@halbordnung.de>
* configure.ac: Check clang_Cursor_getArgument() since it's missing in earlier libclang versions
* configure: Regenerate
* ChangeLog: Reformat a few inconsistencies
2013-07-01 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKOutgoingProxy.m: Implement -handleDBusMessage: on the outgoing proxy.
2013-05-29 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.m: Replace deprecated self->isa access with object_getClass()
* Documentation/Introduction.texi: Fix typo
2012-11-11 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKEndpoint.m: Replace incorrect NSDebugMLog with NSDebugFLog.
Reported by Philippe Roussell.
2012-09-23 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.m
* Source/DKNotificationCenter.m:
Deal with clang warning about casting SEL to uintptr_t.
2012-08-22 Niels Grewe <niels.grewe@halbordnung.de>
* configure.ac: Check for libclang.
* configure: Regenerate.
* Documentation/install.texi: Document optional libclang
requirement.
* INSTALL: Regenerate
* Source/config.h.in: Macro for libclang check.
* Source/DKBoxingUtils.h
* Source/DKBoxingUtils.m:
Add D-Bus type derivation based on libclang. Fix potential index out of
bounds bug in selector name mangling.
* Source/DKArgument.h
* Source/DKArgument.m:
Add methods for generating arguments from CXTypes.
* Source/DKMethod.h
* Source/DKMethod.m:
Add methods for generating methods from CXCursors.
* Source/DKInterface.h
* Source/DKInterface.m:
Add methods for generating interfaces by runtime-inspecting protocols
or classes.
* Source/GNUmakefile: Explicitly link Objective-C and Foundation libs.
* Tests/TestDKInterface.m:
Tests for interface generation from introspection data.
Further work on introspection data generation.
2012-08-18 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.m
* Source/DKMethod.m:
Fix typos.
2012-08-17 Niels Grewe <niels.grewe@halbordnung.de>
* configure.ac: Add a second check for dbus/dbus.h just in case
that pkg-config returns nonesense.
* configure: Regenerate
* Source/DKObjectPathNode.m: Import DKEndpoint header.
Minor build compatibility tweaks.
2012-08-16 Niels Grewe <niels.grewe@halbordnung.de>
* configure.ac: Properly set compiler flags for C99 and detect
the runtime flavour.
* configure: Regenerate.
* config.make.in: Add C99 flags when needed.
* Source/config.h.in: Macros for choosing typed selector
introspection method.
* Source/DKProxy.m
* Source/DKOutgoingProxy.m
* Source/DKMethod.h
* Source/DKMethod.m
* Source/DKObjectPathNode.m:
GCC compatibility tweaks
* Tools/GNUmakefile: Explicitly link against libdbus.
Build compatibility tweaks.
2012-08-16 Niels Grewe <niels.grewe@halbordnung.de>
* configure.ac: Disable -Wdeclaration-after-statement
* configure: Regenerate
* Source/DKArgument.m: Move declaration before statement
(spotted by Philippe Roussel)
2012-08-16 Niels Grewe <niels.grewe@halbordnung.de>
* configure.ac: Temporarily enable -Wno-deprecated-declarations
for clang; check whether we need to include objc/encoding.h.
* configure: Regenerate.
* Headers/DKNotificationCenter.h: Add deprecation notices for
methods using features that are going away. (New API still
missing).
* Source/config.h.in: Add macro for objc/encoding.h check.
* Source/DKArgument.h
* Source/DKArgument.m:
Add convenience method for generating arguments from
Objective-C type encodings.
* Source/DKBoxingUtils.h
* Source/DKBoxingUtils.m:
Implement conversion from selectors to method names; fix type
mapping for id (it was incorrectly mapped to
DBUS_TYPE_OBJECT_PATH, but should be mapped to
DBUS_TYPE_VARIANT).
* Source/DKMethod.h
* Source/DKMethod.m:
Implement generation of methods from runtime introspection
data.
* Source/DKMethodReturn.m: Change method order.
* Source/DKObjectPathNode.m: Fix memory leak.
* Source/DKOutgoingProxy.m: Add some method stubs.
* Source/DKPort.m: Fix bug where the root object was lead to
believe that it was its own child.
* Test/TestDKMethod.m: Add tests for selector mangling and
method generation from runtime data structures.
2012-05-24 Niels Grewe <niels.grewe@halbordnung.de>
* Source/GNUmakefile: Add DKMethodReturn.m
* Source/DKProxy+Private.h
* Source/DKProxy.m:
Tweak generation of introspection data.
* Source/DKMethodReturn.h
* Source/DKMethodReturn.m:
Implement replies to method calls.
* Source/DKMessage.m: Add some debugging.
* Source/DKOutgoingProxy.h
* Source/DKOutgoingProxy.m:
Adopt DKExportableObjectPathNode protocol.
* Source/DKEndpointManager.m: Fix incorrect use of libdbus
APIs.
* Source/DKPort+Private.h
* Source/DKPort.m:
Register exported objects with the D-Bus daemon.
* Source/DKObjectPathNode.h: Another revision of the object
path protocol; add subprotocol for exportable nodes.
* Source/DKObjectPathNode.m: Implement revised object path
protocol; tweak generation of introspection data; Implement
handling of method calls from D-Bus (object path nodes do not
represent any local object and only respond to introspection
requests.
* Tools/dk_make_protocol.m: Follow up changes for revised
object path protocol.
* Tests/TestDKPort.m: Revoke D-Bus object registrations after
the tests.
* Examples/HelloWorldService: Initial scaffolding for an example
service that vends objects to D-Bus.
First batch of object vending changes. We can now succesfully
export arbitrary object graphs to D-Bus and they can (partially)
be introspected by other clients on the bus. Exported objects
don't respond to message sends yet, though.
2012-04-21 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.m: Fix marshalling of vendable local objects.
* Headers/DKProxy.h
* Source/DKProxy+Private.h
* Source/DKProxy.m:
Implement revised object path protocol and proper -isKindOfClass:
method.
* Source/DKObjectPathNode.h
* Source/DKObjectPathNode.m:
Revise DKObjectPath protocol and implement special root object path
subclass. Fix name generation for OPNs.
* Source/DKOutgoingProxy.h
* Source/DKOutgoingProxy.m:
Stub out some methods.
* Headers/DKPort.h
* Source/DKPort+Private.h
* Source/DKPort.m: Implement more of the object path handling and
add a private header to expose some of it.
* Tools/dk_make_protocol.m: Adapt to new introspectable interface.
* Tests/TestDKPort.m: Tests for object path handling.
* Tests/TestDKProperty.m: More flexible test for XML serialization.
More work on vending objects to D-Bus.
2012-04-21 Phillipe Roussel <p.o.roussel@free.fr>
* Source/NSConnection+DBus.m: Move declarations before statements.
2012-03-25 Niels Grewe <niels.grewe@halbordnung.de>
* Headers/NSConnection+DBus.h
* Source/DKOutgoingProxy.h
* Headers/DKPort.h
* Source/DKPort.m
* Source/NSConnection+DBus.m:
Preliminary changes for vending objects.
* Source/DKArgument.m: Remove redundant conditional branch.
Start work on scaffolding for vending objects to D-Bus.
2012-03-25 Niels Grewe <niels.grewe@halbordnung.de>
* Headers/DKNotificationCenter.h: Fix declaration of queueCount ivar.
2012-01-29 Niels Grewe <niels.grewe@halbordnung.de>
* Source/NSConnection+DBus.m: Replace -rootProxy in NSConnection with
the implementation from our category.
* Tests/TestDKProxy.m: Test to verify that we are not breaking
-rootProxy for standard DO.
2012-01-29 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.m: Fix emission of argument names
* Source/DKMethod.m: Fix bug in specifying argument directions.
* Source/DKObjectPathNode.m: Actually comply to the D-Bus spec when
writing introspection data.
* Source/DKProxy.m: Implement XML introspection data generation
* Source/DKProxy+Private.h: Declare -XMLNode on DKProxy
* Tests/TestDKArgument.m
* Tests/TestDKInterface.m
* Tests/TestDKMethod.m
* Tests/TestDKProxy.m:
Make tests more robust.
2012-01-28 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKObjectPathNode.h
* Source/DKObjectPathNode.m
* Source/DKInterface.m
* Source/DKSignal.m:
Implement XML introspection data generation.
* Tests/GNUMakefile: Add new test file.
* Tests/TestDKInterface.m: Add some tests for interfaces.
2012-01-27 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.h
* Source/DKMethod.m
* Source/DKArgument.m
* Source/DKSignal.h
* Source/DKSignal.m
* Source/DKProxy.m
* Source/DKPropertyMethod.m:
Use constants for argument directions consistently.
2012-01-27 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKProperty.m: Implement generation of XML introspection data.
* Tests/GNUMakefile: Add new test file.
* Tests/TestDKProperty.m: Add test for XML introspection data generation.
2012-01-27 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKIntrospectionNode.h
* Source/DKIntrospectionNode.m:
Declare -XMLNode on all introspection nodes.
* Source/DKMethod.m: Implement generation of MXL introspection data.
* Tests/TestDKMethod.m: Add test for XML introspection data generation.
2012-01-27 Niels Grewe <niels.grewe@halbordnung.de>
* Tests/TestDKArgument.m: Add test for annotated XML introspection data.
2012-01-26 Niels Grewe <niels.grewe@halbordnung.de>
* Tests/TestDKArgument.m: Add test for XML generation of arguments.
* Source/DKArgument.h
* Source/DKArgument.m: Small tweaks to XML generation.
2011-12-20 Niels Grewe <niels.grewe@halbordnung.de>
* configure.ac: Improve last commit.
* configure: Regenerate.
2011-12-20 Niels Grewe <niels.grewe@halbordnung.de>
* configure.ac: When selecting an Objective-C compiler, prefer the
value of $CC if $OBJC is not set. Also, if the user does not specify
a specific compiler and clang is installed, default to using clang.
* config.make.in: Update for new compiler selection.
* configure: Regenerate.
2011-10-09 Niels Grewe <niels.grewe@halbordnung.de>
* Documentation/GNUmakefile
* Documentation/dk_make_protocol.1
* Documentation/GNUmakefile.postamble:
Add manpage for dk_make_protocol.
2011-10-05 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKProxy.m: Fix memory leak.
* Source/DKNotificationCenter.m: Rearrange to silence invalid warning
about use-after-free.
Bugfixes for problems detected by clang's static analyser.
2011-10-05 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKProperty.m: Absence of the change notification annotation in
the introspection data implies that the property sends change
notifications (per D-Bus spec).
2011-10-05 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.m: Add a special case for conversions to bool for
compliance with the D-Bus specification.
2011-10-05 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.m
* Source/DKBoxingUtils.m:
Small bugfixes for problems detected by clang.
2011-10-01 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKProperty.h: Expose change notification check method.
* Source/DKProxy.m: Implement -automaticallyNotifiesObserversForKey:
Start working on KVO support.
2011-10-01 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKProperty.m: Implement check whether the property emits change
notifications.
* Source/DKPropertyMethod.m: Ensure that mutators are KVC-compliant.
* Source/DKMethod
* Source/DKPropertyMethod.m:
Fix generation of mutator declarations.
* Documentation/UsingDBus.texi:
Update docs on property mutators.
Make properties somewhat KVC-compliant. NOTE: This constitutes an API
break. If you have code that sets a D-Bus property foo by calling
-setfoo: please change that to -setFoo:.
2011-10-01 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKProperty.h
* Source/DKProperty.m:
Implement emission of Objective-C 2 style @property declarations.
* Source/DKInterface.h
* Source/DKInterface.m:
Modify to expose different property declaration styles.
* Tools/dk_make_protocol.m: Implement switch between Objective-C 1 and
2.
* Documentation/UsingDBus.texi: Document new feature of
dk_make_protocol.
2011-09-25 Niels Grewe <niels.grewe@halbordnung.de>
* Tests/TestDKProxy.m: Type conversion test.
2011-09-25 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKBoxingUtils.h
* Source/DKBoxingUtils.m
* Source/DKArgument.m
* Source/DKMethod.m:
Implement conversion between primitive types.
2011-09-24 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKMethod.m
* Source/DKPropertyMethod.m:
Fix generation of declarations for property accessors/mutators.
2011-09-24 Niels Grewe <niels.grewe@halbordnung.de>
* Documentation/UsingDBus.texi: Updated information about runtime
interaction.
2011-09-22 Niels Grewe <niels.grewe@halbordnung.de>
* Documentation/UsingDBus.texi: Document file descriptor support.
2011-09-21 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKBoxingUtils.m
* Source/DKArgument.m:
Add support for boxing DBUS_TYPE_UNIX_FD as NSFileHandle.
2011-09-21 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKBoxingUtils.m: Implement more type information extraction.
* Source/type_encoding_cases.h: Import from libobjc2
* Documentation/readme.texi: Mention MIT licensed file from libobjc2
* Tests/TestDKArgument.m: Add some tests for the new type info functions.
* README: Regenerate
More preliminaries for type conversion improvements.
2011-09-20 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKBoxingUtils.h
* Source/DKBoxingUtils.m:
Factor out some type conversion logic.
* Source/DKMethod.h
* Source/DKArgument.h
* Source/DKMethod.m
* Source/DKArgument.m
* Source/DKPropertyMethod.m
* Source/GNUmakefile:
Follow-Up changes for DKBoxingUtils.
2011-09-09 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.h
* Source/DKArgument.m
* Source/DKIntrospectionNode.h
* Source/DKIntrospectionNode.m:
Little work on emitting introspection data.
* Source/DKObjectPathNode.m
* Source/DKPortNameServer.m
* Source/DKPort.m
* Source/DKNotificationCenter.m
* Tests/TestDKArgument.m:
Un-bitrot and fix warnings spotted by clang.
Small maintenance changes.
2011-05-17 Andreas Schik <andreas.schick@web.de>
* Source/DKNotificationCenter.m: Fix off-by-one error when
computing the interface from a notification name.
2011-05-13 Niels Grewe <niels.grewe@halbordnung.de>
* Headers/DKNotificationCenter.h
* Source/DKNotificationCenter.m:
Replace libdbus API-calls with DBusKit methods for inserting and
removing match rules on the bus. Depend on the bus object to do
this.
* Source/DKProxy+Private.h
* Source/DKProxy.m:
Add method to test for disconnection. Changes to support recent
fixes in the notification center.
Eliminate a problematic code-path by not depending on the
libdbus API for adding and removing match rules. Turns out we
can just call the corresponding methods via the bus objects.
2011-05-12 Niels Grewe <niels.grewe@halbordnung.de>
* GNUmakefile
* GNUmakefile.preamble:
Bump version to 0.2.
* Headers/DKNotificationCenter.h
* Source/DKNotificationCenter.m:
Thread safety fixes.
* Source/DKArgument.h
* Source/DKArgument.m:
Start implementing generation of XML introspection data.
* Documentation/announce.0.2.texi: Stub release announcement
for the next version.
Thread safety fixes, started working on the generation of D-Bus
XML introspection data.
2011-04-29 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKNotificationCenter.m: Fix incorrect return statement.
2011-04-18 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKNotificationCenter.m: Move handling errors on watch
generation into the observable, make the worker thread perform
adding the watch if possible. This improves reliability when we
are operating without synchronization on +initialize.
2011-04-15 Niels Grewe <niels.grewe@halbordnung.de>
* Tests/TestDKArgument.m: Fix word-size issues.
* Documentation/install.texi: Bump required gnustep-base
version to 1.22.0.
* INSTALL: Regenerate.
2011-04-11 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKEndpointManager.m: Use pseudo interfaces instead of
@class declarations for private classes that need to be
initialized before starting the worker thread. This makes clang
happy.
* Source/DKArgument.m: Remove extraneous parantheses.
* Source/DKInterface.m: Fix a bug that caused property
getters/setters to be registered twice.
Clang compatibility and bugfixes by Sebastian Reitenbach.
2011-03-13 Niels Grewe <niels.grewe@halbordnung.de>
* Source/GNUmakefile: Remove redundant fixup for atomic
operations linkage errors on 32bit intel platforms.
2011-02-28 Niels Grewe <niels.grewe@halbordnung.de>
* configure.ac: Import a lot of autoconf stuff to detect whether
we need to link libgcc for atomic operations.
* config.make.in: Add flags for atomic operations.
* aclocal.m4
* configure:
Regenerate
* m4/*
* config.guess
* config.sub
* ltmain.sh
* libtool
* install-sh:
Add libtool/autconf related file.
Fixes to link libgcc for atomic operations when needed.
2011-02-28 Niels Grewe <niels.grewe@halbordnung.de>
* Source/GNUmakefile: Attempt to fix linkage errors for 32bit
intel platforms.
2011-02-27 Niels Grewe <niels.grewe@halbordnung.de>
* Documentation/DBusKit.gsdoc: Documentation improvement.
* Headers/DKProxy.h
* Source/DKProxy.m:
Document bus-state notifications. Turn strings for notification
names into globals.
* Source/DKEndpointManager.m: Move thread starting code to the
correct place.
2011-02-22 Niels Grewe <niels.grewe@halbordnung.de>
* Documentation/announce.0.1.texi: Add draft release
announcement for 0.1.
* Documentation/GNUmakefile: Add rules for ANNOUNCE
* GNUmakefile.preamble
* Source/GNUmakefile:
Move version number to the top level.
2011-02-22 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKProxy.m: Fixed bug with method cache generation in
the single-threaded case.
2011-02-22 Niels Grewe <niels.grewe@halbordnung.de>
* GNUmakefile: Add packaging metadata.
2011-02-22 Niels Grewe <niels.grewe@halbordnung.de>
* Documentation/UsingDBus.texi: Document failure recovery
procedures.
2011-02-22 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKEndpoint.m: Fix over-release bug where we didn't take
into account the fact that libdbus also takes ownership for the
context objects.
* Source/DKProxy.m: Let DKDBus objects trigger the state sync
between DKNotificationCenter and the D-Bus connection.
* Source/DKNotificationCenter.m: Correctly replace the endpoint
after reconnect. Implement state sync with the new D-Bus
connection.
Finish implementing reconnection logic for bus objects and
notification centers.
2011-02-21 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKEndpointManager.m: Fix the method that fills the ring
buffer to actually do the expected thing in single-threaded mode.
Previously, it would directly execute the request even if it was
requested not to wait, causing unexpected reentrancy for some
things. Also factor out the code that implements fallback to
NSInvocation into a separate method.
* Source/DKPort.m: Use libdbus macro for interface name.
* Source/DKEndpoint.m: Actually remove DKWatchers from the
runloop when thy are deallocated.
* Source/DKProxy.m: Refactor -_disconnected: a bit. Override
-methodSignatureForSelector: for DKDBus in order to play nice
with notification center that does need to call private methods
on DKDBus.
* Source/DKNotificationCenter.m: Fix signal handling to take
into account situations where no sender object is present.
org.freedesktop.DBus.Local.Disconnected is an example.
* Tests/TestDKProxy.m: Be more generous when waiting for threads
to terminate.
Bugfixes to get connection recovery to work. It will now work
exactly once because the notification center does not yet update
the new D-Bus connection to match its local state.
2011-02-19 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKProxy+Private.h: Expose methods necessary for
connection recovery to sibling classes.
* Source/DKProxy.m: Make DKDBus reconstruct the port when
recovery was successful.
* Source/DKEndpointManager.h: Remove faulted connection table.
* Source/DKEndpointManager.m: Implement endpoint recovery. Remove
faulted connection table.
Implement recovery of D-Bus connections for the bus objects.
2011-02-19 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.m: Fix a bug where the field index for
structure was not properly incremented in deserialization.
2011-02-19 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.m: Fix a bug where deserializing an empty
array would erroneously trigger an assertion failure.
2011-02-19 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.m: Be more verbose when failing assertions.
2011-02-18 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKEndpointManager.h
* Source/DKEndpointManager.m:
Update prototype of method for scheduling endpoint recovery.
Recovery will not yet be attempted, though.
* Headers/DKProxy.h: Add ivar to flag disconnected bus objects.
* Source/DKProxy.m: Start implementing disconnection handling
for the bus objects. Also untangle DKDBus and
DKNotificationCenter by overriding a few methods in DKDBus not
to call into the notification center and by using a special
DKPort subclass.
* Source/DKProxy+Private.h: Expose a few more private methods to
the sibling classes.
* Source/DKPort.m: Invalidate ports on disconnection from the
bus. Factor out notification registration into a separate
method.
* Source/DKInterface.h
* Source/DKInterface.m:
Support changes to allow postponing signal registration for bus
objects.
* Source/DKNonAutoInvalidatingPort.h
* Source/DKNonAutoInvalidatingPort.m:
Add subclass that does not rely on a working notification
center. Only used by DKDBus instance.
* Source/DKNotificationCenter.m: Untangle dependencies between
DKDBus and DKNotificationCenter. DKDBus does no longer require
the notification center, hence DKNotificationCenter is now
responsible for registering signal definitions from the bus
objects and making them watch for the disconnection signal.
* Source/GNUmakefile: Add new module.
Start working on recovery of the bus objects after disconnection
from the bus. Also sanitize the dependencies of
DKNotificationCenter and DKDBus.
2011-02-16 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKEndpointManager.m
* Source/DKPortNameServer.m:
Add -dealloc methods to the singletons for completeness.
* Source/DKPortNameServer.m: Actually initialize the (yet
unused) tables.
2011-02-16 Niels Grewe <niels.grewe@halbordnung.de>
* configure.ac: Fix sel_getType_np check.
* configure: Regenerate.
2011-02-16 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKPortNameServer.m
* Headers/DKPortNameServer.h:
Add stub implementation of a port name server.
2011-02-16 Niels Grewe <niels.grewe@halbordnung.de>
Add missing files.
2011-02-15 Niels Grewe <niels.grewe@halbordnung.de>
Merge DBusKit-ThreadRewrite branch. DBusKit now offloads all
interactions with libdbus to a separate thread and uses
DKEndpointManager as a gateway to do so. The new behaviour is
disabled by default and can be enabled by calling [DKPort
enableWorkerThread].
This also contains various improvements and fixes bugs that
were exposed by the new behaviour.
2011-01-10 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.m: Be explicit about the buffer type for
object path arguments when generating standins.
2011-01-10 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.h
* Source/DKArgument.m:
Add specialised deserialisation method for proxy-standins.
* Source/DKObjectPathNode.h
* Source/DKObjectPathNode.m:
Add DKProxyStandin class to be used by the notification
center while generating notifications.
* Source/DKSignal.m: Deserialise DBUS_OBJECT_PATH as a standin,
not as a proxy.
* Source/DKEndpoint.m: Simplify -addTimeout: callback method.
* Source/DKProxy.m: Generate method cache for the bus objects on
init time. (The methods will be used internally anyways.)
* Source/DKNotificationCenter.m: Avoid reentrancy when handling
signals by a) making sure the bus objects are already available
when initialising the notification center and b) using a
DKProxyStandin when checking whether the signal should be
handled and scheduling delivery of the notification on the run
loop. Also fix a stupid va_arg bug.
Attempt to fix reentrancy problems in DKNotificationCenter.
Previously, handling a D-Bus signal could trigger the generation
of DKProxies. Those would in turn would call back into libdbus
code where things would get locked up. (Problem originally
reported by Philippe Roussel.)
2011-01-03 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKProxy.m
* Source/DKIntrospectionParserDelegate.m:
Tweak compatibility with different XML parser versions in
gnustep-base.
* Documentation/readme.texi: Fix typo.
* README: Regenerate.
2010-12-10 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKPort.m: Fix crash in -isEqual: when the receiver is
being compared with a NSPort subclass other than DKPort
(reported by Philippe Roussel).
2010-10-26 Niels Grewe <niels.grewe@halbordnung.de>
* Tests/TestDKMethodCall.m
* Tests/TestDKArgument.m:
Fix memory leaks in the test suite.
2010-10-19 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKPort.m: Implement automatic invalidation of ports
when the remote disappears from the bus. Applications should
watch for NSPortDidBecomeInvalidNotification to catch this
situation.
2010-09-22 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKEndpoint.m: Add -isEqual: and -hash implementations
to DKEndpoint. Improve thread-safety of DKRunLoopContext.
* Source/DKPort.m: Add -isEqual: and -hash implementations.
Remove -_proxyAtPath:, which is superfluous with recent
changes to the DKProxy API.
* Source/DKProxy.m
* Source/DKProxy+Private.h:
Add accessor method for the port and check proxy scopes by means
of port equality.
* Source/NSConnection+DBus.m: Remove use of -[DKPort
_proxyAthPath:].
* Tests/TestDKProxy.m: Improve logging for failure in threaded
test.
Follow-up changes for DKProxy API change, based on suggestions
by Fred Kiefer.
2010-09-19 Niels Grewe <niels.grewe@halbordnung.de>
* ChangLog: Adjust formating.
* Tools/dk_make_protocol.m: Point to the correct license file.
2010-09-19 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKProxy.h
* Source/DKProxy.m:
Adjust to use DKPort.
* Source/DKArgument.m
* Source/DKNotificationCenter.m
* Source/DKObjectPathNode.m
* Source/DKPort.m:
Fixup for changes in DKProxy.
Make DKProxy use a DKPort instead of a DKEndpoint/service name
pair. This is the level of abstraction that will be used by
DKPortNameServer to handle connection invalidation etc.
Note: This breaks binary compatibility for DKPort subclasses
with the fragile ABI.
2010-09-12 Niels Grewe <niels.grewe@halbordnung.de>
* Documentation/Introduction.texi
* Documentation/UsingDBus.texi:
Documentation fixes.
2010-09-12 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKInterface.m: Include property methods in protocol
declarations (no Objective-C 2 style "@property()"-stuff yet)
* Documentation/UsingDBus.texi: Document property support.
2010-09-12 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKMethodCall.m: Fix to respect the semantics of
dbus_message_iter_init().
2010-09-12 Phillipe Rouselle
* Source/DKMethod.m
* Source/DKArgument.m
* Source/DKMethodCall.m
* Source/DKProxy.m
* Source/DKPropertyMethod.m:
Include string.h
With the last modifications to base and libobjc2, each string
function would generate a warning.
2010-09-12 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKInterface.h
* Source/DKInterface.m:
Add -installProperties method.
* Source/DKIntrospectionParserDelegate.m: Enable parsing
properties.
* Source/DKProperty.h: Fix typo and rename method.
* Source/DKProperty.m: Implement -copyWithZone:
* Source/DKPropertyMethod.m: Fix selector string for setters.
* Source/DKProxy.m: Trigger generation of property methods
Enabled property support. Getters are already working, setters
not so much.
2010-09-12 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKIntrospectionParserDelegate.m: Fix (benign) dead store.
* Source/DKArgument.m
* Source/DKEndpoint.m
* Source/DKProxy.m
* Source/DKSignal:
Fix memory leaks.
Fix bugs found by the clang static analyzer.
2010-09-11 Niels Grewe <niels.grewe@halbordnung.de>
* GNUmakefile: Add DKProperty.m and DKPropertyMethod.m to the
build.
* Source/DKArgument.h: Tiny documentation clarification.
* Source/DKMethod.h: Expose some methods needed by the
subclasses.
* Source/DKMethod.m: Introduce a slightly more flexible way of
comparing D-Bus and Obj-C method signatures.
* Source/DKProperty.h: Remove redundant attribute field.
* Source/DKProperty.m: Implement DKProperty to hold
introspection data about properties.
* Source/DKPropertyMethod.h: Complete header.
* Source/DKPropertyMethod.m: Slight cleanup for the accessor,
implement the mutator method.
Even more work on properties.
2010-09-11 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.m: Fix typo. Protect against potential
memory leak when unmarshalling a variant type argument raises an
exception.
* Source/DKProperty.h: Changes to the class layout, added some
method declarations.
* Source/DKPropertyMethod.h
* Source/DKPropertyMethod.m:
Began stubbing out support for property accessor methods.
Further work on properties. (Not yet connected to the build)
2010-09-11 Niels Grewe <niels.grewe@halbordnung.de>
* Documentation/GNUmakefile: Fix copy-and-paste error.
2010-09-11 Niels Grewe <niels.grewe@halbordnung.de>
* ChangeLog: Generate from `svn log'.
* Source/DKSignal.h: Documentation fix.
* Source/DKProperty.h: Add header.
Begin conceptualizing property support. Add ChangeLog.
2010-09-10 Richard Frith-Macdonald <rfm@gnu.org>
* GNUmakefile: warn if gnustep-make not found
2010-09-09 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKProxy.m: Fix bug reported by Philippe Roussel. (Note to self:
Unit tests are only useful if you actually run them…)
2010-09-05 Niels Grewe <niels.grewe@halbordnung.de>
* Tests/GNUmakefile
* Tests/GNUmakefile.postamble
* Tests/TestDKArgument.m
* Tests/TestDKMethodCall.m
* Tests/TestDKPort.m
* Tests/TestDKProxy.m:
Fix compilation of testcases if DBusKit is not yet installed.
2010-08-23 Niels Grewe <niels.grewe@halbordnung.de>
* Tools/GNUmakefile.postamble: Fix build by creating link to the header
dir. (reported by Philippe Roussel).
* Documentation/GNUmakefile.postamble: Fix removal of documentation on
`make uninstall'.
2010-08-20 Niels Grewe <niels.grewe@halbordnung.de>
* GNUmakefile: Only build documentation if makeinfo and texi2pdf are
available.
* Source/DKNotificationCenter.m: Fix bug that caused a sanity check to
be skipped.
2010-08-18 Niels Grewe <niels.grewe@halbordnung.de>
* Documentation/install.texi: Mention the nonstrict flag.
* INSTALL: Regenerate.
2010-08-18 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.m: Fix cast
2010-08-17 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKNotificationCenter.m: Improve documentation for
-[DKObservable matchesUserInfo:], simplified generation of observables
by the notification center.
2010-08-16 Niels Grewe <niels.grewe@halbordnung.de>
* COPYING: Add LGPL.
* GNUmakefile: Add documentation to the build.
* GNUmakefile.preamble: Add version variable.
* Documentation/GNUmakefile
* Documentation/GNUmakefile.postamble
* Documentation/readme.texi
* Documentation/install.texi
* Documentation/DBusKit.gsdoc:
Build README and INSTALL as well as reference documentation.
* Headers/DKProxy.h
* Headers/DKPort.h
* Headers/DNotificationCenter.h:
Mark ivars as private. Minor documentation improvements.
* README
* INSTALL:
Regenerate.
Improvements to the documentation.
2010-08-16 Niels Grewe <niels.grewe@halbordnung.de>
* Examples/Apertium/ApertiumUtilityPanel.h,
* Examples/Apertium/ApertiumUtilityPanel.m:
Add files missing from last commit.
2010-08-16 Niels Grewe <niels.grewe@halbordnung.de>
* Examples/Apertium/ApertiumController.m
* Examples/Apertium/GNUmakefile
* Examples/Apertium/LanguagePanel.gorm/data.classes
* Examples/Apertium/LanguagePanel.gorm/objects.gorm:
Make language selection panel an utility window.
2010-08-16 Niels Grewe <niels.grewe@halbordnung.de>
* Headers/DKNotificationCenter.h: Clarify removal semantics for
observations.
2010-08-16 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKNotificationCenter.m: More consistent implementation of
adding/removing observers.
2010-08-16 Niels Grewe <niels.grewe@halbordnung.de>
* Headers/DKNotificationCenter.h
* Source/DKNotificationCenter.m:
Simplify removal of observations.
2010-08-15 Niels Grewe <niels.grewe@halbordnung.de>
* Documentation/Introduction.texi
* Documentation/UsingDBus.texi:
Orthographical corrections.
2010-08-15 Niels Grewe <niels.grewe@halbordnung.de>
* Documentation/DBusKit.texi: Reorder menu.
2010-08-15 Niels Grewe <niels.grewe@halbordnung.de>
* Documentation/DBusKit.texi
* Documentation/ExposingObjects.texi
* Documentation/Introduction.texi
* Documentation/UsingDBus.texi:
Further work on the manual.
2010-08-14 Niels Grewe <niels.grewe@halbordnung.de>
* Documentation
* Documentation/DBusKit.texi,
* Documentation/GNUmakefile
* Documentation/Introduction.texi
* Documentation/fdl-1.3.texi:
Begun writing a guide on how to use D-Bus with GNUstep:
2010-08-14 Niels Grewe <niels.grewe@halbordnung.de>
* Tools/COPYING
* Tools/dk_make_protocol.m:
Add license.
2010-08-14 Niels Grewe <niels.grewe@halbordnung.de>
* GNUMakefile
* Tools/GNUmakefile
* Tools/dk_make_protocol.m:
Add primitive tool to generate protocol declarations from .interface
files.
* Source/DKInterface.m: Small tweak to the generation of protocol
declarations.
2010-08-13 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKInterface.m
* Source/DKPort.m
* Source/DKProxy.m:
A few more documentation improvements.
2010-08-13 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.h
* Source/DKArgument.m
* Source/DKEndpoint.m
* Source/DKInterface.h
* Source/DKIntrospectionNode.h
* Source/DKIntrospectionParserDelegate.h
* Source/DKMessage.h
* Source/DKMethod.h
* Source/DKObjectPathNode.h
* Source/DKObjectPathNode.m
* Source/DKSignal.h:
Documentation improvements.
2010-08-13 Niels Grewe <niels.grewe@halbordnung.de>
* Headers/DBusKit.h: Add DKNotificationCenter.h
* Source/DKProxy.m: Use correct path to the bus object.
* Source/DKNotificationCenter.m: Observe name changes so that sender
rules for observables stay up to date.
2010-08-13 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKNotificationCenter.m: Improve documentation. Fix removal
of signal-match from D-Bus.
2010-08-13 Niels Grewe <niels.grewe@halbordnung.de>
* Headers/DKProxy.h: Small documentation improvement.
* Headers/DKNotificationCenter.h: Documented DKNotificationCenter. Added
ivar.
* Source/DKProxy.m: Override -respondsToSelector:. Protect generation of
the method cache so that a remote error doesn't leave the object in an
unusable state.
* Source/DKEndpoint.m: Fix DKWakeUp(). (Previously, it would create
unwanted reentrancy.)
* Source/DKNotificationCenter.m: Primitive support for observing D-Bus
signals.
Preliminary support for D-Bus signals. Documentation
improvements.
2010-08-12 Niels Grewe <niels.grewe@halbordnung.de>
* Headers/DKProxy.h
* Source/DKProxy.m
* Source/DKInterface.[hm]:
Remove dispatch table from DKProxy and let DKInterface generate it
instead.
* Source/DKInterface.[hm]: Fix memory leak. Rename -methodForSelector:
to -DBusMethodForSelector:. Also move registration of signals here.
* Source/DKMethod.m: Generate smarter method declarations.
* Source/DKIntrospectionParserDelegate.m: Return nil from -leaf instead
of NSNull. Improve handling signals.
* Source/DKSignal.[hm]: Implement generation of userInfo dictionaries
for notifications from received signals.
* Source/DKMethodCall.m: Small indentation fix.
* Headers/DKNotificationCenter.h
* Source/DKNotificationCenter.m:
Bugfixes. Continue implementing generation of notifications from
signals.
* Tests/TestDKMethodCall.m
* Tests/TestDkMethod.m:
Use new method name.
A few bugfixes and improvements suggested by Fred Kiefer.
Continued work on D-Bus signals.
2010-08-09 Niels Grewe <niels.grewe@halbordnung.de>
* Headers/DKNotificationCenter.h
* Source/DKNotificationCenter.m:
Implement method to add match rules for signals.
2010-08-09 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKEndpoint.m: Remove workaround for some libdbus oddity I was
experiencing earlier.
2010-08-09 Niels Grewe <niels.grewe@halbordnung.de>
* Headers/DKProxy.h
* Source/DKProxy.m:
API refinements for DKDBus.
* Headers/DKPort.h
* Source/DKPort.m
* Tests/TestDKProxy.m:
Finish replacing subclasses with equivalent initializers. Adopt
test case.
2010-08-09 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.m: Mark some functions as inlineable.
* Source/DKEndpoint.[hm]: Carry over information about the new
endpoint when an old one is being reused. Fix bug in
-initWithConnectionTo: where the new connection never got assigned.
Rearrange method order. Improve documentation a bit.
2010-08-09 Niels Grewe <niels.grewe@halbordnung.de>
* Headers/DKNotificationCenter.h
* Source/DKNotificationCenter.m:
Move rule generation into DKObservable helper-class.
2010-08-08 Niels Grewe <niels.grewe@halbordnung.de>
* Headers/DKNotificationCenter.h
* Source/DKNotificationCenter.m:
Remove struct nonsense in favour of real objects.
2010-08-08 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKSignal.[hm]: Make DKSignal useful.
* Header/DKNotificationCenter.h: Add notificationNames ivar.
* Source/DKNotificationCenter.m: Implement registration of signals and
notification names.
* DKIntrospectionParserDelegate.m: Parse signals and trigger their
registration with the appropriate notification center.
* Tests/TestDKProxy.m: Fix test for errors returned by remote objects.
2010-08-07 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKMethodCall.m: Clarify exception name.
2010-08-07 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKNotificationCenter.m: Add methods to generate rules for
matching D-Bus signals.
2010-08-07 Niels Grewe <niels.grewe@halbordnung.de>
* Headers/DKProxy.h
* Source/DKProxy.m:
Add DKDBus subclass for getting shared proxies to the
org.freedesktop.DBus services on their respective busses.
* Source/DKProxy.m
* Source/DKProxy+Private.h:
Implement -_uniqueName to get the unique name of a service from the bus.
* Headers/DKPort.h: Add "don't know" member value to the bus type
enumeration.
* Source/DKPort.m: Use DKDBus instead of -getBusObject magic.
* Source/DKEndpoint.[hm]: Implement -DBusBusType to get the type of bus
an endpoint is connected to.
* Source/DKInterface.[hm]: Add some more methods for signals/properties.
* Headers/DKNotificationCenter.h
* Source/DKNotificationCenter.m
* Source/GNUmakefile:
Add very much work-in-progress notification center class for managing
D-Bus signals.
2010-08-07 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.m
* Source/DKInterface.m
* Source/DKIntrospectionNode.m
* Source/DKMethod.m
* Source/DKSignal.m
* Source/DKObjectPathNode.m:
Fix various issues in -copyWithZone:.
* Source/DKInterface.[hm]: Begin adding plumbing for signals/properties.
* Source/DKIntrospectionNode.[hm]: Add -annotations method to get the
annotation dictionary for a node.
* Tests/TestDKMethod.m: Fix the copy test to use the correct selector.
Fix NSCopying for DKIntrospectionNode and subclasses.
2010-08-07 Niels Grewe <niels.grewe@halbordnung.de>
* Tests/TestDKMethod.m: Add test for copying parts of the introspection
graph (fails at the moment).
2010-08-05 Niels Grewe <niels.grewe@halbordnung.de>
* Headers/DKPort.h
* Source/DKPort.m:
Add DKDBusBusType enumeration and related initializer.
* Source/DKArgument.m
* Source/DKInterface.m
* Source/DKIntrospectionNode.[hm]
* Source/DKMethod.m
* Source/DKObjectPathNode.m
* Source/DKSignal.m:
Adopt NSCopying for DKIntrospectionNode and subclasses.
* Source/NSConnection+DBus.m: Add further integration methods (commented
out until DKPortNameServer can be committed).
2010-07-31 Niels Grewe <niels.grewe@halbordnung.de>
* Headers/DKProxy.h
* Source/DKProxy.m:
Add an explicit NSCondition and a state variable to make synchronisation
more robust (and readable).
* Tests/TestDKProxy.m: Adopt to changed code and add test for calling
methods from multiple threads.
Thread safety improvements.
2010-07-30 Niels Grewe <niels.grewe@halbordnung.de>
* Source/AsyncBehavior.h
* Source/DKProxy.m:
Disable asnychronous generation of the method cache again (it doesn't
seem to be working reliably).
2010-07-30 Niels Grewe <niels.grewe@halbordnung.de>
* Source/AsyncBehavior.h: Bugfix.
* Source/DKEndpoint.[hm]: Support watchers and timers on multiple
run-loops.
* Source/DKProxy.m: Allow D-Bus methods to be called from multiple
threads. Also enable asynchronous generation of the method cache.
2010-07-30 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKProxy.m: Attempt to clarify the code path for method lookup.
2010-07-29 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKProxy.m: Rename -_methodForSelector:block: to
-_methodForSelector:waitForCache:.
* Source/DKArgument.m: Add cast that might be needed.
2010-07-29 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKInterface.m: Really fix the initializer this time.
* Source/DKIntrospectionParserDelegate.m: Smarter handling of the root
node.
* Source/DKArgument.m
* Source/DKMethodCall.m
* Source/DKProxy.m
* Source/DKProxy+Private.m:
Move some more methods that are often used by the internal classes into
DKProxy+Private.h.
* Source/DKObjectPathNode.h
* Source/DKObjectPathNode.m:
Implement retrieval of a proxy for a DKObjectPathNode.
More cleanup and minor improvements.
2010-07-28 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKIntrospectionParserDelegate.m
* Source/DKMethod.[hm]
* Source/DKSignal.[hm]:
Simplify (or remove) method and signal initalizer to not require
the interface name. Remove _DKMethodIntrospect.
* Source/DKProxy.m
* Source/DKProxy+Private.h:
Implement _DKInterfaceIntrospectable to replace _DKMethodIntrospect.
* Source/DKInterface.m: Normalize selectors before table
lookups/updates.
* Tests/TestDKMethod.m
* Tests/TestDKMethodCall.m:
Adapt test cases to use _DKInterfaceIntrospectable.
Refactor the global introspection method into a global introspection
interface to allow simpler initializers for DKMethod and DKSignal.
2010-07-28 Niels Grewe <niels.grewe@halbordnung.de>
* Headers/DKProxy.h
* Source/GNUmakefile
* Source/DKObjectPathNode.[hm]
* Source/DKProxy.m
* Source/DKProxy+Private.h:
Add DKObjectPathNode class and protocol (handles object trees and
interfaces). Implement DKObjectPathNode protocol in DKProxy and expose
it via DKProxy+Private.h.
* Source/DKArgument.m
* Source/DKIntrospectionNode.m
* Source/DKMethod.m
* Source/DKMethodCall.m
* Source/DKOutgoingProxy.h
* Source/DKPort.m
* Source/DKProxy.m
* Source/NSConnection+DBus.m:
Include new DKProxy+Private.h instead of the public header.
* Source/DKMethod.[hm]
* Source/DKInterface.[hm]
* Source/DKIntrospectionParserDelegate.m
* Tests/TestDKMethod.m:
Rename initializers of DKMethod and DKInterface to follow the naming
scheme of the superclass more closely.
* Source/DKIntrospectionParserDelegate.[hm]: Use the parent to store the
introspection tree and not the parser delegate.
Clean up the generation of the introspection data so that the parser
delegate doesn't need to keep the generated tree around. Also be more
consistent about naming initializers in subclasses of
DKIntrospectionNode.
2010-07-28 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKEndpoint.m: Prevent libdbus from calling _exit() when
the bus goes away.
2010-07-27 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKInterface.m
* Source/DKIntrospectionNode.[hm]
* Source/DKMethod.m:
Remove parser delegate methods and ivars.
* Source/DKSignal.[hm]
* Source/GNUmakefile:
Add stub for handling signals.
* Source/DKIntrospectionParserDelegate.[hm]: Consolidate XML parsing and
keep a stack for the XML tree.
Refactor introspection handling so that the generation of the
introspection graph happens entirely from within
DKIntrospectionParserDelegate.
2010-07-21 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKProxy.m: Only refer to D-Bus methods by their untyped
selector IDs.
2010-07-21 Niels Grewe <niels.grewe@halbordnung.de>
* Examples/Apertium/ApertiumInfo.m
* Examples/Apertium/ApertiumTranslator.m
* Tests/TestDKPort.m
* Tests/TestDKProxy.m:
Fix memory leaks generated by the fact that I copy and paste too much
without thinking.
2010-07-21 Niels Grewe <niels.grewe@halbordnung.de>
* Headers/NSConnection+DBus.h
* Source/NSConnection+DBus.m:
Add -proxyAtPath: method to obtain proxies for non-root objects of a
D-Bus service.
* Source/GNUmakefile: Add NSConnection+DBus.[hm] to build.
* Source/DKPort.m: Rearrange so that proxy generation is separated from
encoding the proxy for use in NSConnection.
* Headers/DBusKit.h: Add DKProxy.h and NSConnection+DBus.h.
* Tests/TestDKProxy.m: Test for fetching proxies to non-root objects.
2010-07-20 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKEndpoint.m: Improve error reporting.
2010-07-20 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKPort.m: Make DKPort check whether the requested remote
is available on the bus.
2010-07-19 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKProxy.m: Use sel_get_type() instead of accessing a
selector's type field directly.
2010-07-19 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKPort.m: Move from NSLog() to NSDebugMLog()
* Source/DKProxy.[mh]: Move from NSLog() to NSDebugMLog(). Implement
-setPrimaryDBusInterface:.
2010-07-19 Niels Grewe <niels.grewe@halbordnung.de>
* Examples/Apertium/ApertiumInfo.m: Check whether making calls to
the org.apertium.info object on D-Bus raises an exception. Also more
checking when generating the localized language string for the UI.
2010-07-18 Niels Grewe <niels.grewe@halbordnung.de>
* Examples/Apertium/ApertiumInfo.m: Strip whitespace from mode strings.
* Examples/Apertium/ApertiumServer.m: Properly handle exceptions from
the D-Bus side.
2010-07-18 Niels Grewe <niels.grewe@halbordnung.de>
* Examples, Examples/Apertium
* Examples/Apertium/ApertiumController.h
* Examples/Apertium/ApertiumController.m
* Examples/Apertium/ApertiumInfo.h
* Examples/Apertium/ApertiumInfo.m
* Examples/Apertium/ApertiumInfo.plist
* Examples/Apertium/ApertiumServer.h
* Examples/Apertium/ApertiumServer.m
* Examples/Apertium/ApertiumTranslator.h
* Examples/Apertium/ApertiumTranslator.m
* Examples/Apertium/COPYING
* Examples/Apertium/GNUmakefile
* Examples/Apertium/LanguagePanel.gorm
* Examples/Apertium/LanguagePanel.gorm/data.classes
* Examples/Apertium/LanguagePanel.gorm/data.info
* Examples/Apertium/LanguagePanel.gorm/objects.gorm
* Examples/Apertium/SourceLanguagePopup.h
* Examples/Apertium/SourceLanguagePopup.m
* Examples/Apertium/main.m:
Commit a little example demonstrating what is possible with DBusKit. The
Apertium.service hooks into the Apertium machine translation system via
D-Bus and exposes it as a service. You can thus use the translator from
within any GNUstep application. The DBusKit-specific portions are
contained in ApertiumTranslator.m and ApertiumInfo.m.
2010-07-18 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKEndpoint.m: Turn NSLog() calls into NSDebugMLog().
Fix a bug where timers were not tracked, causing them to not be
invalidated properly (they would sometimes fire after the target object
disappeared).
2010-07-17 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.m: Guard against nil values as arguments. Fix bug in
* marshalling variant type arguments.
2010-07-16 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.m: Fix bug where strings would be messed up
because of an improper cast.
2010-07-16 Niels Grewe <niels.grewe@halbordnung.de>
* Tests/GNUmakefile: Keep gnustep-make from installing the
testsuite.
2010-07-16 Niels Grewe <niels.grewe@halbordnung.de>
* Tests/TestDKProxy.m: Add test case for methods that contain boxed
and non-boxed arguments.
2010-07-16 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKMethod.[hm]: Be more flexible about boxing. Decide
whether argument should or shouldn't be boxed based on the
related invocation.
* Source/DKMethodCall.[hm]
* Source/DKProxy.m
* Tests/TestDKMethodCall.m
* Tests/TestDKProxy.m:
Remove references to the old argument types which did statically
decide on a boxing scheme.
* Headers/DKProxy.h: Remove unused ivar.
Make better use of D-Bus and Objective-C introspection data to
decide on the fly whether an argument to a D-Bus method should
be boxed in an Objective-C object or not.
2010-07-16 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKInterface.[hm]:
Add -methods to return the array of all methods in the interface.
* Source/DKIntrospectionNode.[hm]: Add -setParent: method that is
needed to reparent nodes from the parser delegate to the proxy
that is using them.
* Source/DKIntrospectionParserDelegate.[hm]: Add class to hold
the constructed introspection graph.
* Source/DKMethod.m: Remove call to DKProxy's _installMethod:...
method.
* Source/DKProxy.m: Remove parser delegate methods and reorganise
the code so that DKProxy itself is responsible for installing
the methods found by introspection.
* Source/GNUmakefile: Add DKIntrospectionParserDelegate.m to the
build.
Separate parsing of introspection data from DKProxy, which is now
also responsible for installing methods.
2010-07-16 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKIntrospectionNode.m
* Source/DKProxy.m:
Simplify -proxyParent method.
2010-07-14 Niels Grewe <niels.grewe@halbordnung.de>
* GNUmakefile
* GNUmakefile.postamble
* Source/GNUmakefile
* Source/GNUmakefile.postamble
* Source/Tests
* Tests
* Tests/GNUmakefile
* Tests/GNUmakefile.postamble
* Tests/TestDKArgument.m
* Tests/TestDKMethod.m
* Tests/TestDKMethodCall.m
* Tests/TestDKPort.m
* Tests/TestDKProxy.m:
Reorganise the project so that the tests are built as a separate
subproject and linked against the framework.
2010-07-13 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKInterface.m: Remove erratic parentheses around protocol
names.
2010-07-13 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.m
* Source/DKMethod.m
* Source/DKMethodCall.m:
Replace side-effect ridden NSAsserts.
2010-07-12 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKProxy.m: Make proper use of selector types to
generate the method signature so that methods can be called
unmangled without boxing the arguments.
* Source/Tests/TestDKProxy.m: Implement test for unboxed method
calls.
2010-07-12 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKProxy.m: Some bugfixes. Implement handling mangled
selectors.
* Source/Tests/TestDKProxy.m: Test sending unboxed method calls
with mangled selectors.
2010-07-12 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKMethodCall.m: Fix statement order and typo.
* Source/Tests/TestDKProxy.m: Test for returning errors from
D-Bus.
2010-07-12 Niels Grewe <niels.grewe@halbordnung.de>
* Headers/DKProxy.h: Add needed ivars.
* Source/AsyncBehavior.h: Minor addition.
* Source/DKArgument.[mh]: Remove -proxyParent method (now in
superclass)
* Source/DKInterface.h: Declare -mangledName.
* Source/DKInterface.m: Implement selector/method-map and XML
parser delegate methods.
* Source/DKIntrospectionNode.[mh]: Move -proxyParent method here.
Handle annotations.
* Source/DKMethod.[hm]: Implement -selectorString method to
generate selector names. Also add XML parser delegate methods.
* Source/DKMethodCall.m: Fix bug where an D-Bus error was used
unitialized.
* Source/DKProxy.m: Remove async stuff (pretty superfluous right
now). Fix various bugs in selector resolution and implement
building the method cache.
* Source/Tests/TestDKProxy.m: Add tests for new functionality.
Implement the remaining bits of basic proxy functionality.
Arbitrary D-Bus methods can now be called when their arguments
are boxed as Objective-C types. Calling methods without boxing
to come.
2010-07-04 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.m: Fix -isDictionary method for array
arguments.
2010-07-04 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.m: Remove isa-swizzling in favour of creating
the correct objects in the initalizers.
2010-07-03 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.m: Remove
incorrect -release (spotted by Fred Kiefer).
* Source/Tests/TestDKMethodCall.m
* Source/Tests/TestDKArgument.m:
Small test improvements.
2010-07-02 Niels Grewe <niels.grewe@halbordnung.de>
* Source/AsyncBehavior.h: Add macros to do stuff asynchronously
if possible.
* Source/DKInterface.[hm]: Remove superfluous -parent method.
* Source/DKMethod.m: Some more modularisation. Add comparison
method. Calculate offsets and sizes for signatures correctly.
* Headers/DKProxy.h: Add instance variables.
* Source/DKProxy.[hm]: Implement -forwardInvocation: and triggers
to generate the method cache (actual generation of the cache
still missing).
* Source/Tests/TestDKProxy.m: Add test for calling Introspect()
via the built-in _DKMethodIntrospect.
* Source/Tests/TestDKArgument.m: Minor rearrangement.
Made dispatching D-Bus method calls work via -forwardInvocation:.
As of yet, you can only call -Introspect (this is needed to obtain the
introspection data used to build the actual method cache).
2010-06-28 Niels Grewe <niels.grewe@halbordnung.de>
* configure.ac: Fix autoconf test for location of runtime.h
* configure: Regenerate
2010-06-26 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKEndpoint.[hm]: Turn DKRunLoopContext into an instance
variable. Some features need access to the run loop and run loop
mode information.
* Source/DKMethodCall.[hm]: Add implementation of synchronous
method calls and stubbed out support for asynchronous calls.
* Source/GNUmakefile: Add new modules.
* Source/Tests/TestDKMethodCall.m: Add test for introspection
method call.
2010-06-26 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKMethod.h: Fixed missing include.
2010-06-26 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKMethod.h: Add (un-)marshalling methods to the header.
2010-06-26 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKEndpoint.[mh]:
Add accessor method for the DBusConnection on libdbus-level.
* Source/GNUmakefile
* Source/DKMessage.[mh]:
Add primitive class for sending message to D-Bus.
2010-06-26 Niels Grewe <niels.grewe@halbordnung.de>
* Source/Tests/TestDKArgument.m: Add test for fallback-to-struct
feature when encoding dictionaries to variant types.
2010-06-26 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.m, Source/Tests/TestDKArgument.m: Fix
generation of signatures for objects that are passed as variant
type arguments. Some test-cases for this.
2010-06-24 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.[mh]: Implement marshalling of variant
types. Also add the ability to customize the unboxing of
objects.
* Source/DKEndpoint.m
* Source/DKMethod.m
* Source/DKPort.m:
Compile fixes for clang.
* Source/DKOutgoingProxy.[mh]
* Source/GNUmakefile:
Add stub implementation for outgoing proxies.
* Source/DKProxy.m: Add method to distinguish outgoing and
incoming proxies.
* Source/Tests/TestDKProxy.m: Fix runtime.h include.
* Source/Tests/TestDKArgument.m: Add test for custom unboxing
methods.
* Source/config.h.in
* config.make.in
* configure.ac
* GNUmakefile.postamble:
Update configure script and paraphernalia to check for advanced
runtime features.
* configure: Regenerate
Finish implementation of (un-)marshalling values between
NSInvocation and D-Bus messages. More flexible scheme for
unboxing values. Various smaller fixes.
2010-06-21 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.m: Implement unmarshalling D-Bus variant types.
2010-06-21 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.m: (Un-)marshalling of D-Bus structs.
2010-06-21 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.m: Finish (un-)marshalling of dictionaries.
2010-06-20 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.m: Implement unmarshalling of D-Bus
dictionaries.
2010-06-20 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.m: WIP (un-)marshalling of complex types.
2010-06-18 Niels Grewe <niels.grewe@halbordnung.de>
* Source/GNUmakefile
Source/DKInterface.[hm]:
Add WIP representation of D-Bus interfaces.
* Source/DKIntrospectionNode.[mh]: Basic XML parser delegate
methods.
* Source/DKMethod.m: Remove superflous method signature code.
* Source/DKMethod.m
* Source/DKArgument.m
* Source/DKArgument.h:
Work on marshalling/unmarshalling between NSInvocation and D-Bus
messages.
2010-06-15 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKMethod.h, Source/DKMethod.m: Remove leftover duplicate
code.
2010-06-15 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.h
* Source/DKArgument.m
* Source/DKIntrospectionNode.h
* Source/DKIntrospectionNode.m
* Source/DKMethod.h
* Source/DKMethod.m
* Source/GNUmakefile,
* Source/Tests/TestDKMethod.m:
Factor common code out into DKIntrospectionNode and make
DKArgument and DKMethod use it.
2010-06-14 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKMethod.h, Source/DKMethod.m: Also use
org.freedesktop.DBus.Method.NoReply annotation to mark the
method as oneway.
2010-06-14 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKMethod.h
* Source/DKMethod.m,
Source/Tests/TestDKMethod.m:
Make DKMethod generate method declarations.
2010-06-14 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKProxy.m
* Source/GNUmakefile
* Source/Tests/TestDKProxy.m:
Work on method name unmangling. Now partially working, still ugly
as hell.
2010-06-11 Niels Grewe <niels.grewe@halbordnung.de>
* Source/Tests/TestDKMethod.m
* Source/Tests/TestDKArgument.m:
Tests for assignments in the initializers.
* Source/DKProxy.m
* Headers/DKProxy.h:
-hasSameScopeAs: method to test whether two proxies fall into
the scope of one and the same D-Bus service.
* Source/DKArgument.h: Expose a few accessors.
* Source/DKArgument.m: Fix bug in the name assignment. Implement
-name method.
Let the proxy do the scope checking.
* Source/DKMethod.m: Shuffle a few statements around for more
natural ordering.
* configure.ac: Leave a TODO about needing to fix the configure
script ugliness.
* config.make.in: Another attempt to get linking done properly.
Many improvement suggested by Fred Kiefer.
2010-06-11 Niels Grewe <niels.grewe@halbordnung.de>
* Headers/DKProxy.h
* Source/DKProxy.m
* config.make.in:
Fix failure to link against libdbus (reported by Fred Kiefer).
Initial work on method-name mangling.
2010-06-11 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.m: short is apparently always 16bit.
2010-06-11 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.m: Fix unboxing of doubles.
* Source/Tests/TestDKArgument.m: Add test cases for unboxing.
2010-06-11 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.h
* Source/DKArgument.m
* Source/DKProxy.m:
Implement unboxing of simple types. Fix boxing of 64bit values.
2010-06-11 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.m
* Source/DKProxy.m
* Source/GNUmakefile,
* Source/GNUmakefile.postamble
* Source/Tests/TestDKArgument.m,
* Source/Tests/TestDKPort.m:
Add a few more tests and some dummy methods.
2010-06-10 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.h
* Source/DKArgument.m
* Source/DKProxy.m,
* Source/Tests/TestDKArgument.m:
Boxing of simple types with associated test-coverage.
2010-06-10 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.h
* Source/DKArgument.m
* Source/DKMethod.h
* Source/DKMethod.m
* Source/GNUmakefile
* Source/Tests/TestDKMethod.m:
Add initial implementation of DKMethod to encapsulate D-Bus
method information.
2010-06-09 Niels Grewe <niels.grewe@halbordnung.de>
* Source/GNUmakefile
* Source/GNUmakefile.postamble:
Provide link to public headers when compiling the tests.
2010-06-09 Niels Grewe <niels.grewe@halbordnung.de>
* GNUmakefile: autorun ukrun for tests.
* configure.ac
* config.make.in
* Source/GNUmakefile:
Check for and use -Wdeclaration-after-statement
* Source/DKArgument.m
* Source/DKPort.m:
Fix C99isms.
* Source/Tests/TestDKArgument.m: Separate unit tests from source.
Properly include local headers.
2010-06-08 Niels Grewe <niels.grewe@halbordnung.de>
* GNUmakefile
* Source/DKArgument.h
* Source/DKArgument.m
* Source/GNUmakefile
* Source/TestDKArgument.m:
Fix DKArgument problems. Add test cases for DKArgument (requires
UnitKit).
2010-06-07 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.h
* Source/DKArgument.m:
Support generating D-Bus type signatures from DKArgument trees.
2010-06-07 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.h
* Source/DKArgument.m:
Made DKArgument collect all subtypes of an argument from a D-Bus
message. Totally untested, though.
2010-06-07 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.m: Place -release call properly. Thanks to Fred
Kiefer for pointing that out.
2010-06-07 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKArgument.h
* Source/DKArgument.m
* Source/DKEndpoint.m,
* Source/GNUmakefile:
WIP representation of D-Bus argument information.
2010-05-31 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKPort.m: Simpify DKPort a bit.
2010-05-31 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKProxy.m: Actually, -[NSProxy dealloc] can be called.
Pointed out by Fred Kiefer; no idea why I thought that wasn't
possible…
2010-05-30 Niels Grewe <niels.grewe@halbordnung.de>
* GNUmakefile
* Headers/DKProxy.h
* Source/DKEndpoint.h
* Source/DKEndpoint.m
* Source/DKPort.m
* Source/DKProxy.m
* Source/GNUmakefile:
Add a dummy proxy class. Finish implementation of the
NSConnection integration for ROOTPROXY_REQUEST messages:
Connections to D-Bus can now return their own proxies.
2010-05-27 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKPort.m: Call self instead of super for DKPort subclass
initializers.
2010-05-26 Niels Grewe <niels.grewe@halbordnung.de>
* Source/DKEndpoint.m: Fixes a bug where returning an pre-existing
DKEndpoint would result in a teardown of the D-Bus connection.
Also work around some libdbus strangeness that needs further
investigation.
* Source/DKPort.m: Slightly more expressive designated
initializer. Begin stubbing out integration into NSConnection.
* Headers/DKPort.h: Add initializer.
2010-05-10 Niels Grewe <niels.grewe@halbordnung.de>
* GNUmakefile.postamble
* Headers/config.h.in
* aclocal.m4
* configure
* configure.ac:
Add configure script and paraphernalia (but make still
regenerates config.make on distclean).
* Source/DKPort: Simple initializers for DKPort.
2010-05-09 Niels Grewe <niels.grewe@halbordnung.de>
* .
* GNUmakefile
* GNUmakefile.postamble
* Headers
* Headers/DBusKit.h
* Headers/DKPort.h
* Headers/config.h.in
* Source
* Source/DKEndpoint.h
* Source/DKEndpoint.m
* Source/DKPort.m
* Source/GNUmakefile
* config.make.in
* configure.ac:
Import code in preparation for GSoC.