2014-01-13 Niels Grewe * Source/DKMethodReturn.m: Fix a glaring memory leak. 2014-01-13 Niels Grewe * Source/GNUmakefile * Headers/DBusKit.h * Headers/DKCommon.h: Add a header for shared public definitions, and declare a marco that turns on __attribute__((deprecated)) when the compiler (clang or GCC >= 4.6) supports it. * Headers/DKProxy.h: Fix typo. * Source/DKNotificationCenter.m * Headers/DKNotificationCenter.h: Deprecate old vararg style method because it was using a mixture of C-style arguments and varags in a slightly confusing way. Introduce a new method to replace it that accepts the filter specification as an NSDictionary. * Source/DKSignal.[hm]: Allow converting between mapped notification keys and D-Bus signal argument indices. * Source/type_encoding_cases.h: Document license in the file so that people don't have to look at the README. 2014-01-09 Niels Grewe * Source/DKBoxingUtils.m: Add support for NSData conversion in the libclang introspection generator. 2014-01-09 Niels Grewe * Examples/GlobalMenu/GlobalMenuTheme.m: Fall back to in-window menus if the menu server is not available. 2014-01-08 Niels Grewe * Source/DKMethodCall.m * Source/DKMethod.m * Source/DKMessage.m * Source/DKPropertyMethod.m * Source/DKPort.m: String format safety improvements. * Source/DKArgument.m: Fix bug in NSData unmarshalling. * Tests/TestDKArgument.m: Testcase for NSData boxing/unboxing of byte arrays. * Tests/TestDKProxy.m: Tweak system port test case. 2014-01-06 Niels Grewe * README: Regenerate * Source/DKEndpointManager.m * Source/DKInterface.m: Format string safety improvements. * Source/DKSignal.h * Source/DKSignal.m: Add method to marshall the contents of a notification's user info dictionary into D-Bus wire format. 2014-01-05 Niels Grewe * Bundles/DBusMenu/DKMenuRegistry.m: Use the standard -windowDevice: method instead of the custom one. 2014-01-04 Niels Grewe * Source/DKArgument.m: Decode byte arrays as NSData if the introspection data says we should. 2014-01-01 Niels Grewe * Headers/DKStruct.h * Headers/DBusKit.h * Source/DKStruct.m: Helper class for structure-like arrays. This is needed only for variant typed arguments because these don't carry the introspection information that lets us decide whether something is an array or a D-Bus structure * Source/DKArgument.m: Support explicit structure typed arguments and start working on support for converting from NSData to D-Bus byte arrays. 2013-12-30 Niels Grewe * Source/DKMethod.m * Source/DKMethodReturn.m: Fix unmarshalling of arguments in an incoming D-Bus method call. 2013-12-30 Niels Grewe * Source/DKArgument.m: Improve validity checking on object paths. 2013-07-10 Niels Grewe * Source/DKOutgoingProxy.m: Add missing include. (Reported by Philippe Roussell) Implement some stuff missing for proper D-Bus facing objects. * Source/DKObjectPathNode.h: Expose another method for DKOutgoingProxy to use. * Source/DKPort.m: Add some debugging for object path name handling. * Examples/HelloWorldService/main.m: Tweak export. * Examples/HelloWorldService/test.xml: Add test interface. 2013-07-02 Niels Grewe * 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 * 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 * Source/DKOutgoingProxy.m: Implement -handleDBusMessage: on the outgoing proxy. 2013-05-29 Niels Grewe * Source/DKArgument.m: Replace deprecated self->isa access with object_getClass() * Documentation/Introduction.texi: Fix typo 2012-11-11 Niels Grewe * Source/DKEndpoint.m: Replace incorrect NSDebugMLog with NSDebugFLog. Reported by Philippe Roussell. 2012-09-23 Niels Grewe * Source/DKArgument.m * Source/DKNotificationCenter.m: Deal with clang warning about casting SEL to uintptr_t. 2012-08-22 Niels Grewe * 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 * Source/DKArgument.m * Source/DKMethod.m: Fix typos. 2012-08-17 Niels Grewe * 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 * 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 * configure.ac: Disable -Wdeclaration-after-statement * configure: Regenerate * Source/DKArgument.m: Move declaration before statement (spotted by Philippe Roussel) 2012-08-16 Niels Grewe * 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 * 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 * 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 * Source/NSConnection+DBus.m: Move declarations before statements. 2012-03-25 Niels Grewe * 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 * Headers/DKNotificationCenter.h: Fix declaration of queueCount ivar. 2012-01-29 Niels Grewe * 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 * 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 * 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 * 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 * 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 * 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 * Tests/TestDKArgument.m: Add test for annotated XML introspection data. 2012-01-26 Niels Grewe * 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 * configure.ac: Improve last commit. * configure: Regenerate. 2011-12-20 Niels Grewe * 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 * Documentation/GNUmakefile * Documentation/dk_make_protocol.1 * Documentation/GNUmakefile.postamble: Add manpage for dk_make_protocol. 2011-10-05 Niels Grewe * 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 * 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 * Source/DKArgument.m: Add a special case for conversions to bool for compliance with the D-Bus specification. 2011-10-05 Niels Grewe * Source/DKArgument.m * Source/DKBoxingUtils.m: Small bugfixes for problems detected by clang. 2011-10-01 Niels Grewe * Source/DKProperty.h: Expose change notification check method. * Source/DKProxy.m: Implement -automaticallyNotifiesObserversForKey: Start working on KVO support. 2011-10-01 Niels Grewe * 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 * 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 * Tests/TestDKProxy.m: Type conversion test. 2011-09-25 Niels Grewe * Source/DKBoxingUtils.h * Source/DKBoxingUtils.m * Source/DKArgument.m * Source/DKMethod.m: Implement conversion between primitive types. 2011-09-24 Niels Grewe * Source/DKMethod.m * Source/DKPropertyMethod.m: Fix generation of declarations for property accessors/mutators. 2011-09-24 Niels Grewe * Documentation/UsingDBus.texi: Updated information about runtime interaction. 2011-09-22 Niels Grewe * Documentation/UsingDBus.texi: Document file descriptor support. 2011-09-21 Niels Grewe * Source/DKBoxingUtils.m * Source/DKArgument.m: Add support for boxing DBUS_TYPE_UNIX_FD as NSFileHandle. 2011-09-21 Niels Grewe * 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 * 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 * 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 * Source/DKNotificationCenter.m: Fix off-by-one error when computing the interface from a notification name. 2011-05-13 Niels Grewe * 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 * 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 * Source/DKNotificationCenter.m: Fix incorrect return statement. 2011-04-18 Niels Grewe * 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 * 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 * 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 * Source/GNUmakefile: Remove redundant fixup for atomic operations linkage errors on 32bit intel platforms. 2011-02-28 Niels Grewe * 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 * Source/GNUmakefile: Attempt to fix linkage errors for 32bit intel platforms. 2011-02-27 Niels Grewe * 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 * 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 * Source/DKProxy.m: Fixed bug with method cache generation in the single-threaded case. 2011-02-22 Niels Grewe * GNUmakefile: Add packaging metadata. 2011-02-22 Niels Grewe * Documentation/UsingDBus.texi: Document failure recovery procedures. 2011-02-22 Niels Grewe * 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 * 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 * 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 * Source/DKArgument.m: Fix a bug where the field index for structure was not properly incremented in deserialization. 2011-02-19 Niels Grewe * Source/DKArgument.m: Fix a bug where deserializing an empty array would erroneously trigger an assertion failure. 2011-02-19 Niels Grewe * Source/DKArgument.m: Be more verbose when failing assertions. 2011-02-18 Niels Grewe * 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 * 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 * configure.ac: Fix sel_getType_np check. * configure: Regenerate. 2011-02-16 Niels Grewe * Source/DKPortNameServer.m * Headers/DKPortNameServer.h: Add stub implementation of a port name server. 2011-02-16 Niels Grewe Add missing files. 2011-02-15 Niels Grewe 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 * Source/DKArgument.m: Be explicit about the buffer type for object path arguments when generating standins. 2011-01-10 Niels Grewe * 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 * 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 * 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 * Tests/TestDKMethodCall.m * Tests/TestDKArgument.m: Fix memory leaks in the test suite. 2010-10-19 Niels Grewe * 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 * 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 * ChangLog: Adjust formating. * Tools/dk_make_protocol.m: Point to the correct license file. 2010-09-19 Niels Grewe * 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 * Documentation/Introduction.texi * Documentation/UsingDBus.texi: Documentation fixes. 2010-09-12 Niels Grewe * 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 * 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 * 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 * 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 * 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 * 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 * Documentation/GNUmakefile: Fix copy-and-paste error. 2010-09-11 Niels Grewe * 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 * GNUmakefile: warn if gnustep-make not found 2010-09-09 Niels Grewe * 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 * 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 * 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 * 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 * Documentation/install.texi: Mention the nonstrict flag. * INSTALL: Regenerate. 2010-08-18 Niels Grewe * Source/DKArgument.m: Fix cast 2010-08-17 Niels Grewe * Source/DKNotificationCenter.m: Improve documentation for -[DKObservable matchesUserInfo:], simplified generation of observables by the notification center. 2010-08-16 Niels Grewe * 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 * Examples/Apertium/ApertiumUtilityPanel.h, * Examples/Apertium/ApertiumUtilityPanel.m: Add files missing from last commit. 2010-08-16 Niels Grewe * 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 * Headers/DKNotificationCenter.h: Clarify removal semantics for observations. 2010-08-16 Niels Grewe * Source/DKNotificationCenter.m: More consistent implementation of adding/removing observers. 2010-08-16 Niels Grewe * Headers/DKNotificationCenter.h * Source/DKNotificationCenter.m: Simplify removal of observations. 2010-08-15 Niels Grewe * Documentation/Introduction.texi * Documentation/UsingDBus.texi: Orthographical corrections. 2010-08-15 Niels Grewe * Documentation/DBusKit.texi: Reorder menu. 2010-08-15 Niels Grewe * Documentation/DBusKit.texi * Documentation/ExposingObjects.texi * Documentation/Introduction.texi * Documentation/UsingDBus.texi: Further work on the manual. 2010-08-14 Niels Grewe * 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 * Tools/COPYING * Tools/dk_make_protocol.m: Add license. 2010-08-14 Niels Grewe * 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 * Source/DKInterface.m * Source/DKPort.m * Source/DKProxy.m: A few more documentation improvements. 2010-08-13 Niels Grewe * 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 * 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 * Source/DKNotificationCenter.m: Improve documentation. Fix removal of signal-match from D-Bus. 2010-08-13 Niels Grewe * 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 * 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 * Headers/DKNotificationCenter.h * Source/DKNotificationCenter.m: Implement method to add match rules for signals. 2010-08-09 Niels Grewe * Source/DKEndpoint.m: Remove workaround for some libdbus oddity I was experiencing earlier. 2010-08-09 Niels Grewe * 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 * 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 * Headers/DKNotificationCenter.h * Source/DKNotificationCenter.m: Move rule generation into DKObservable helper-class. 2010-08-08 Niels Grewe * Headers/DKNotificationCenter.h * Source/DKNotificationCenter.m: Remove struct nonsense in favour of real objects. 2010-08-08 Niels Grewe * 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 * Source/DKMethodCall.m: Clarify exception name. 2010-08-07 Niels Grewe * Source/DKNotificationCenter.m: Add methods to generate rules for matching D-Bus signals. 2010-08-07 Niels Grewe * 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 * 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 * Tests/TestDKMethod.m: Add test for copying parts of the introspection graph (fails at the moment). 2010-08-05 Niels Grewe * 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 * 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 * 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 * 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 * Source/DKProxy.m: Attempt to clarify the code path for method lookup. 2010-07-29 Niels Grewe * Source/DKProxy.m: Rename -_methodForSelector:block: to -_methodForSelector:waitForCache:. * Source/DKArgument.m: Add cast that might be needed. 2010-07-29 Niels Grewe * 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 * 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 * 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 * Source/DKEndpoint.m: Prevent libdbus from calling _exit() when the bus goes away. 2010-07-27 Niels Grewe * 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 * Source/DKProxy.m: Only refer to D-Bus methods by their untyped selector IDs. 2010-07-21 Niels Grewe * 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 * 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 * Source/DKEndpoint.m: Improve error reporting. 2010-07-20 Niels Grewe * Source/DKPort.m: Make DKPort check whether the requested remote is available on the bus. 2010-07-19 Niels Grewe * Source/DKProxy.m: Use sel_get_type() instead of accessing a selector's type field directly. 2010-07-19 Niels Grewe * Source/DKPort.m: Move from NSLog() to NSDebugMLog() * Source/DKProxy.[mh]: Move from NSLog() to NSDebugMLog(). Implement -setPrimaryDBusInterface:. 2010-07-19 Niels Grewe * 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 * 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 * 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 * 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 * Source/DKArgument.m: Guard against nil values as arguments. Fix bug in * marshalling variant type arguments. 2010-07-16 Niels Grewe * Source/DKArgument.m: Fix bug where strings would be messed up because of an improper cast. 2010-07-16 Niels Grewe * Tests/GNUmakefile: Keep gnustep-make from installing the testsuite. 2010-07-16 Niels Grewe * Tests/TestDKProxy.m: Add test case for methods that contain boxed and non-boxed arguments. 2010-07-16 Niels Grewe * 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 * 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 * Source/DKIntrospectionNode.m * Source/DKProxy.m: Simplify -proxyParent method. 2010-07-14 Niels Grewe * 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 * Source/DKInterface.m: Remove erratic parentheses around protocol names. 2010-07-13 Niels Grewe * Source/DKArgument.m * Source/DKMethod.m * Source/DKMethodCall.m: Replace side-effect ridden NSAsserts. 2010-07-12 Niels Grewe * 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 * 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 * Source/DKMethodCall.m: Fix statement order and typo. * Source/Tests/TestDKProxy.m: Test for returning errors from D-Bus. 2010-07-12 Niels Grewe * 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 * Source/DKArgument.m: Fix -isDictionary method for array arguments. 2010-07-04 Niels Grewe * Source/DKArgument.m: Remove isa-swizzling in favour of creating the correct objects in the initalizers. 2010-07-03 Niels Grewe * 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 * 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 * configure.ac: Fix autoconf test for location of runtime.h * configure: Regenerate 2010-06-26 Niels Grewe * 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 * Source/DKMethod.h: Fixed missing include. 2010-06-26 Niels Grewe * Source/DKMethod.h: Add (un-)marshalling methods to the header. 2010-06-26 Niels Grewe * 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 * Source/Tests/TestDKArgument.m: Add test for fallback-to-struct feature when encoding dictionaries to variant types. 2010-06-26 Niels Grewe * 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 * 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 * Source/DKArgument.m: Implement unmarshalling D-Bus variant types. 2010-06-21 Niels Grewe * Source/DKArgument.m: (Un-)marshalling of D-Bus structs. 2010-06-21 Niels Grewe * Source/DKArgument.m: Finish (un-)marshalling of dictionaries. 2010-06-20 Niels Grewe * Source/DKArgument.m: Implement unmarshalling of D-Bus dictionaries. 2010-06-20 Niels Grewe * Source/DKArgument.m: WIP (un-)marshalling of complex types. 2010-06-18 Niels Grewe * 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 * Source/DKMethod.h, Source/DKMethod.m: Remove leftover duplicate code. 2010-06-15 Niels Grewe * 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 * 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 * Source/DKMethod.h * Source/DKMethod.m, Source/Tests/TestDKMethod.m: Make DKMethod generate method declarations. 2010-06-14 Niels Grewe * 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 * 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 * 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 * Source/DKArgument.m: short is apparently always 16bit. 2010-06-11 Niels Grewe * Source/DKArgument.m: Fix unboxing of doubles. * Source/Tests/TestDKArgument.m: Add test cases for unboxing. 2010-06-11 Niels Grewe * Source/DKArgument.h * Source/DKArgument.m * Source/DKProxy.m: Implement unboxing of simple types. Fix boxing of 64bit values. 2010-06-11 Niels Grewe * 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 * 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 * 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 * Source/GNUmakefile * Source/GNUmakefile.postamble: Provide link to public headers when compiling the tests. 2010-06-09 Niels Grewe * 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 * 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 * Source/DKArgument.h * Source/DKArgument.m: Support generating D-Bus type signatures from DKArgument trees. 2010-06-07 Niels Grewe * 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 * Source/DKArgument.m: Place -release call properly. Thanks to Fred Kiefer for pointing that out. 2010-06-07 Niels Grewe * Source/DKArgument.h * Source/DKArgument.m * Source/DKEndpoint.m, * Source/GNUmakefile: WIP representation of D-Bus argument information. 2010-05-31 Niels Grewe * Source/DKPort.m: Simpify DKPort a bit. 2010-05-31 Niels Grewe * 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 * 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 * Source/DKPort.m: Call self instead of super for DKPort subclass initializers. 2010-05-26 Niels Grewe * 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 * 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 * . * 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. 2013-12-30 Niels Grewe * Source/DKArgument.m: Improve validity checking on object paths. 2013-07-10 Niels Grewe * Source/DKOutgoingProxy.m: Add missing include. (Reported by Philippe Roussell) Implement some stuff missing for proper D-Bus facing objects. * Source/DKObjectPathNode.h: Expose another method for DKOutgoingProxy to use. * Source/DKPort.m: Add some debugging for object path name handling. * Examples/HelloWorldService/main.m: Tweak export. * Examples/HelloWorldService/test.xml: Add test interface. 2013-07-02 Niels Grewe * 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 * 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 * Source/DKOutgoingProxy.m: Implement -handleDBusMessage: on the outgoing proxy. 2013-05-29 Niels Grewe * Source/DKArgument.m: Replace deprecated self->isa access with object_getClass() * Documentation/Introduction.texi: Fix typo 2012-11-11 Niels Grewe * Source/DKEndpoint.m: Replace incorrect NSDebugMLog with NSDebugFLog. Reported by Philippe Roussell. 2012-09-23 Niels Grewe * Source/DKArgument.m * Source/DKNotificationCenter.m: Deal with clang warning about casting SEL to uintptr_t. 2012-08-22 Niels Grewe * 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 * Source/DKArgument.m * Source/DKMethod.m: Fix typos. 2012-08-17 Niels Grewe * 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 * 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 * configure.ac: Disable -Wdeclaration-after-statement * configure: Regenerate * Source/DKArgument.m: Move declaration before statement (spotted by Philippe Roussel) 2012-08-16 Niels Grewe * 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 * 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 * 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 * Source/NSConnection+DBus.m: Move declarations before statements. 2012-03-25 Niels Grewe * 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 * Headers/DKNotificationCenter.h: Fix declaration of queueCount ivar. 2012-01-29 Niels Grewe * 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 * 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 * 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 * 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 * 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 * 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 * Tests/TestDKArgument.m: Add test for annotated XML introspection data. 2012-01-26 Niels Grewe * 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 * configure.ac: Improve last commit. * configure: Regenerate. 2011-12-20 Niels Grewe * 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 * Documentation/GNUmakefile * Documentation/dk_make_protocol.1 * Documentation/GNUmakefile.postamble: Add manpage for dk_make_protocol. 2011-10-05 Niels Grewe * 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 * 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 * Source/DKArgument.m: Add a special case for conversions to bool for compliance with the D-Bus specification. 2011-10-05 Niels Grewe * Source/DKArgument.m * Source/DKBoxingUtils.m: Small bugfixes for problems detected by clang. 2011-10-01 Niels Grewe * Source/DKProperty.h: Expose change notification check method. * Source/DKProxy.m: Implement -automaticallyNotifiesObserversForKey: Start working on KVO support. 2011-10-01 Niels Grewe * 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 * 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 * Tests/TestDKProxy.m: Type conversion test. 2011-09-25 Niels Grewe * Source/DKBoxingUtils.h * Source/DKBoxingUtils.m * Source/DKArgument.m * Source/DKMethod.m: Implement conversion between primitive types. 2011-09-24 Niels Grewe * Source/DKMethod.m * Source/DKPropertyMethod.m: Fix generation of declarations for property accessors/mutators. 2011-09-24 Niels Grewe * Documentation/UsingDBus.texi: Updated information about runtime interaction. 2011-09-22 Niels Grewe * Documentation/UsingDBus.texi: Document file descriptor support. 2011-09-21 Niels Grewe * Source/DKBoxingUtils.m * Source/DKArgument.m: Add support for boxing DBUS_TYPE_UNIX_FD as NSFileHandle. 2011-09-21 Niels Grewe * 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 * 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 * 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 * Source/DKNotificationCenter.m: Fix off-by-one error when computing the interface from a notification name. 2011-05-13 Niels Grewe * 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 * 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 * Source/DKNotificationCenter.m: Fix incorrect return statement. 2011-04-18 Niels Grewe * 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 * 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 * 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 * Source/GNUmakefile: Remove redundant fixup for atomic operations linkage errors on 32bit intel platforms. 2011-02-28 Niels Grewe * 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 * Source/GNUmakefile: Attempt to fix linkage errors for 32bit intel platforms. 2011-02-27 Niels Grewe * 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 * 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 * Source/DKProxy.m: Fixed bug with method cache generation in the single-threaded case. 2011-02-22 Niels Grewe * GNUmakefile: Add packaging metadata. 2011-02-22 Niels Grewe * Documentation/UsingDBus.texi: Document failure recovery procedures. 2011-02-22 Niels Grewe * 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 * 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 * 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 * Source/DKArgument.m: Fix a bug where the field index for structure was not properly incremented in deserialization. 2011-02-19 Niels Grewe * Source/DKArgument.m: Fix a bug where deserializing an empty array would erroneously trigger an assertion failure. 2011-02-19 Niels Grewe * Source/DKArgument.m: Be more verbose when failing assertions. 2011-02-18 Niels Grewe * 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 * 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 * configure.ac: Fix sel_getType_np check. * configure: Regenerate. 2011-02-16 Niels Grewe * Source/DKPortNameServer.m * Headers/DKPortNameServer.h: Add stub implementation of a port name server. 2011-02-16 Niels Grewe Add missing files. 2011-02-15 Niels Grewe 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 * Source/DKArgument.m: Be explicit about the buffer type for object path arguments when generating standins. 2011-01-10 Niels Grewe * 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 * 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 * 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 * Tests/TestDKMethodCall.m * Tests/TestDKArgument.m: Fix memory leaks in the test suite. 2010-10-19 Niels Grewe * 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 * 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 * ChangLog: Adjust formating. * Tools/dk_make_protocol.m: Point to the correct license file. 2010-09-19 Niels Grewe * 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 * Documentation/Introduction.texi * Documentation/UsingDBus.texi: Documentation fixes. 2010-09-12 Niels Grewe * 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 * 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 * 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 * 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 * 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 * 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 * Documentation/GNUmakefile: Fix copy-and-paste error. 2010-09-11 Niels Grewe * 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 * GNUmakefile: warn if gnustep-make not found 2010-09-09 Niels Grewe * 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 * 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 * 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 * 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 * Documentation/install.texi: Mention the nonstrict flag. * INSTALL: Regenerate. 2010-08-18 Niels Grewe * Source/DKArgument.m: Fix cast 2010-08-17 Niels Grewe * Source/DKNotificationCenter.m: Improve documentation for -[DKObservable matchesUserInfo:], simplified generation of observables by the notification center. 2010-08-16 Niels Grewe * 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 * Examples/Apertium/ApertiumUtilityPanel.h, * Examples/Apertium/ApertiumUtilityPanel.m: Add files missing from last commit. 2010-08-16 Niels Grewe * 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 * Headers/DKNotificationCenter.h: Clarify removal semantics for observations. 2010-08-16 Niels Grewe * Source/DKNotificationCenter.m: More consistent implementation of adding/removing observers. 2010-08-16 Niels Grewe * Headers/DKNotificationCenter.h * Source/DKNotificationCenter.m: Simplify removal of observations. 2010-08-15 Niels Grewe * Documentation/Introduction.texi * Documentation/UsingDBus.texi: Orthographical corrections. 2010-08-15 Niels Grewe * Documentation/DBusKit.texi: Reorder menu. 2010-08-15 Niels Grewe * Documentation/DBusKit.texi * Documentation/ExposingObjects.texi * Documentation/Introduction.texi * Documentation/UsingDBus.texi: Further work on the manual. 2010-08-14 Niels Grewe * 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 * Tools/COPYING * Tools/dk_make_protocol.m: Add license. 2010-08-14 Niels Grewe * 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 * Source/DKInterface.m * Source/DKPort.m * Source/DKProxy.m: A few more documentation improvements. 2010-08-13 Niels Grewe * 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 * 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 * Source/DKNotificationCenter.m: Improve documentation. Fix removal of signal-match from D-Bus. 2010-08-13 Niels Grewe * 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 * 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 * Headers/DKNotificationCenter.h * Source/DKNotificationCenter.m: Implement method to add match rules for signals. 2010-08-09 Niels Grewe * Source/DKEndpoint.m: Remove workaround for some libdbus oddity I was experiencing earlier. 2010-08-09 Niels Grewe * 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 * 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 * Headers/DKNotificationCenter.h * Source/DKNotificationCenter.m: Move rule generation into DKObservable helper-class. 2010-08-08 Niels Grewe * Headers/DKNotificationCenter.h * Source/DKNotificationCenter.m: Remove struct nonsense in favour of real objects. 2010-08-08 Niels Grewe * 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 * Source/DKMethodCall.m: Clarify exception name. 2010-08-07 Niels Grewe * Source/DKNotificationCenter.m: Add methods to generate rules for matching D-Bus signals. 2010-08-07 Niels Grewe * 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 * 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 * Tests/TestDKMethod.m: Add test for copying parts of the introspection graph (fails at the moment). 2010-08-05 Niels Grewe * 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 * 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 * 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 * 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 * Source/DKProxy.m: Attempt to clarify the code path for method lookup. 2010-07-29 Niels Grewe * Source/DKProxy.m: Rename -_methodForSelector:block: to -_methodForSelector:waitForCache:. * Source/DKArgument.m: Add cast that might be needed. 2010-07-29 Niels Grewe * 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 * 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 * 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 * Source/DKEndpoint.m: Prevent libdbus from calling _exit() when the bus goes away. 2010-07-27 Niels Grewe * 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 * Source/DKProxy.m: Only refer to D-Bus methods by their untyped selector IDs. 2010-07-21 Niels Grewe * 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 * 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 * Source/DKEndpoint.m: Improve error reporting. 2010-07-20 Niels Grewe * Source/DKPort.m: Make DKPort check whether the requested remote is available on the bus. 2010-07-19 Niels Grewe * Source/DKProxy.m: Use sel_get_type() instead of accessing a selector's type field directly. 2010-07-19 Niels Grewe * Source/DKPort.m: Move from NSLog() to NSDebugMLog() * Source/DKProxy.[mh]: Move from NSLog() to NSDebugMLog(). Implement -setPrimaryDBusInterface:. 2010-07-19 Niels Grewe * 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 * 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 * 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 * 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 * Source/DKArgument.m: Guard against nil values as arguments. Fix bug in * marshalling variant type arguments. 2010-07-16 Niels Grewe * Source/DKArgument.m: Fix bug where strings would be messed up because of an improper cast. 2010-07-16 Niels Grewe * Tests/GNUmakefile: Keep gnustep-make from installing the testsuite. 2010-07-16 Niels Grewe * Tests/TestDKProxy.m: Add test case for methods that contain boxed and non-boxed arguments. 2010-07-16 Niels Grewe * 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 * 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 * Source/DKIntrospectionNode.m * Source/DKProxy.m: Simplify -proxyParent method. 2010-07-14 Niels Grewe * 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 * Source/DKInterface.m: Remove erratic parentheses around protocol names. 2010-07-13 Niels Grewe * Source/DKArgument.m * Source/DKMethod.m * Source/DKMethodCall.m: Replace side-effect ridden NSAsserts. 2010-07-12 Niels Grewe * 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 * 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 * Source/DKMethodCall.m: Fix statement order and typo. * Source/Tests/TestDKProxy.m: Test for returning errors from D-Bus. 2010-07-12 Niels Grewe * 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 * Source/DKArgument.m: Fix -isDictionary method for array arguments. 2010-07-04 Niels Grewe * Source/DKArgument.m: Remove isa-swizzling in favour of creating the correct objects in the initalizers. 2010-07-03 Niels Grewe * 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 * 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 * configure.ac: Fix autoconf test for location of runtime.h * configure: Regenerate 2010-06-26 Niels Grewe * 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 * Source/DKMethod.h: Fixed missing include. 2010-06-26 Niels Grewe * Source/DKMethod.h: Add (un-)marshalling methods to the header. 2010-06-26 Niels Grewe * 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 * Source/Tests/TestDKArgument.m: Add test for fallback-to-struct feature when encoding dictionaries to variant types. 2010-06-26 Niels Grewe * 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 * 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 * Source/DKArgument.m: Implement unmarshalling D-Bus variant types. 2010-06-21 Niels Grewe * Source/DKArgument.m: (Un-)marshalling of D-Bus structs. 2010-06-21 Niels Grewe * Source/DKArgument.m: Finish (un-)marshalling of dictionaries. 2010-06-20 Niels Grewe * Source/DKArgument.m: Implement unmarshalling of D-Bus dictionaries. 2010-06-20 Niels Grewe * Source/DKArgument.m: WIP (un-)marshalling of complex types. 2010-06-18 Niels Grewe * 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 * Source/DKMethod.h, Source/DKMethod.m: Remove leftover duplicate code. 2010-06-15 Niels Grewe * 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 * 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 * Source/DKMethod.h * Source/DKMethod.m, Source/Tests/TestDKMethod.m: Make DKMethod generate method declarations. 2010-06-14 Niels Grewe * 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 * 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 * 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 * Source/DKArgument.m: short is apparently always 16bit. 2010-06-11 Niels Grewe * Source/DKArgument.m: Fix unboxing of doubles. * Source/Tests/TestDKArgument.m: Add test cases for unboxing. 2010-06-11 Niels Grewe * Source/DKArgument.h * Source/DKArgument.m * Source/DKProxy.m: Implement unboxing of simple types. Fix boxing of 64bit values. 2010-06-11 Niels Grewe * 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 * 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 * 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 * Source/GNUmakefile * Source/GNUmakefile.postamble: Provide link to public headers when compiling the tests. 2010-06-09 Niels Grewe * 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 * 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 * Source/DKArgument.h * Source/DKArgument.m: Support generating D-Bus type signatures from DKArgument trees. 2010-06-07 Niels Grewe * 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 * Source/DKArgument.m: Place -release call properly. Thanks to Fred Kiefer for pointing that out. 2010-06-07 Niels Grewe * Source/DKArgument.h * Source/DKArgument.m * Source/DKEndpoint.m, * Source/GNUmakefile: WIP representation of D-Bus argument information. 2010-05-31 Niels Grewe * Source/DKPort.m: Simpify DKPort a bit. 2010-05-31 Niels Grewe * 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 * 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 * Source/DKPort.m: Call self instead of super for DKPort subclass initializers. 2010-05-26 Niels Grewe * 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 * 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 * . * 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. 2013-12-30 Niels Grewe * Source/DKArgument.m: Improve validity checking on object paths. 2013-07-10 Niels Grewe * Source/DKOutgoingProxy.m: Add missing include. (Reported by Philippe Roussell) Implement some stuff missing for proper D-Bus facing objects. * Source/DKObjectPathNode.h: Expose another method for DKOutgoingProxy to use. * Source/DKPort.m: Add some debugging for object path name handling. * Examples/HelloWorldService/main.m: Tweak export. * Examples/HelloWorldService/test.xml: Add test interface. 2013-07-02 Niels Grewe * 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 * 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 * Source/DKOutgoingProxy.m: Implement -handleDBusMessage: on the outgoing proxy. 2013-05-29 Niels Grewe * Source/DKArgument.m: Replace deprecated self->isa access with object_getClass() * Documentation/Introduction.texi: Fix typo 2012-11-11 Niels Grewe * Source/DKEndpoint.m: Replace incorrect NSDebugMLog with NSDebugFLog. Reported by Philippe Roussell. 2012-09-23 Niels Grewe * Source/DKArgument.m * Source/DKNotificationCenter.m: Deal with clang warning about casting SEL to uintptr_t. 2012-08-22 Niels Grewe * 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 * Source/DKArgument.m * Source/DKMethod.m: Fix typos. 2012-08-17 Niels Grewe * 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 * 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 * configure.ac: Disable -Wdeclaration-after-statement * configure: Regenerate * Source/DKArgument.m: Move declaration before statement (spotted by Philippe Roussel) 2012-08-16 Niels Grewe * 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 * 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 * 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 * Source/NSConnection+DBus.m: Move declarations before statements. 2012-03-25 Niels Grewe * 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 * Headers/DKNotificationCenter.h: Fix declaration of queueCount ivar. 2012-01-29 Niels Grewe * 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 * 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 * 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 * 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 * 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 * 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 * Tests/TestDKArgument.m: Add test for annotated XML introspection data. 2012-01-26 Niels Grewe * 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 * configure.ac: Improve last commit. * configure: Regenerate. 2011-12-20 Niels Grewe * 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 * Documentation/GNUmakefile * Documentation/dk_make_protocol.1 * Documentation/GNUmakefile.postamble: Add manpage for dk_make_protocol. 2011-10-05 Niels Grewe * 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 * 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 * Source/DKArgument.m: Add a special case for conversions to bool for compliance with the D-Bus specification. 2011-10-05 Niels Grewe * Source/DKArgument.m * Source/DKBoxingUtils.m: Small bugfixes for problems detected by clang. 2011-10-01 Niels Grewe * Source/DKProperty.h: Expose change notification check method. * Source/DKProxy.m: Implement -automaticallyNotifiesObserversForKey: Start working on KVO support. 2011-10-01 Niels Grewe * 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 * 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 * Tests/TestDKProxy.m: Type conversion test. 2011-09-25 Niels Grewe * Source/DKBoxingUtils.h * Source/DKBoxingUtils.m * Source/DKArgument.m * Source/DKMethod.m: Implement conversion between primitive types. 2011-09-24 Niels Grewe * Source/DKMethod.m * Source/DKPropertyMethod.m: Fix generation of declarations for property accessors/mutators. 2011-09-24 Niels Grewe * Documentation/UsingDBus.texi: Updated information about runtime interaction. 2011-09-22 Niels Grewe * Documentation/UsingDBus.texi: Document file descriptor support. 2011-09-21 Niels Grewe * Source/DKBoxingUtils.m * Source/DKArgument.m: Add support for boxing DBUS_TYPE_UNIX_FD as NSFileHandle. 2011-09-21 Niels Grewe * 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 * 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 * 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 * Source/DKNotificationCenter.m: Fix off-by-one error when computing the interface from a notification name. 2011-05-13 Niels Grewe * 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 * 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 * Source/DKNotificationCenter.m: Fix incorrect return statement. 2011-04-18 Niels Grewe * 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 * 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 * 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 * Source/GNUmakefile: Remove redundant fixup for atomic operations linkage errors on 32bit intel platforms. 2011-02-28 Niels Grewe * 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 * Source/GNUmakefile: Attempt to fix linkage errors for 32bit intel platforms. 2011-02-27 Niels Grewe * 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 * 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 * Source/DKProxy.m: Fixed bug with method cache generation in the single-threaded case. 2011-02-22 Niels Grewe * GNUmakefile: Add packaging metadata. 2011-02-22 Niels Grewe * Documentation/UsingDBus.texi: Document failure recovery procedures. 2011-02-22 Niels Grewe * 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 * 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 * 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 * Source/DKArgument.m: Fix a bug where the field index for structure was not properly incremented in deserialization. 2011-02-19 Niels Grewe * Source/DKArgument.m: Fix a bug where deserializing an empty array would erroneously trigger an assertion failure. 2011-02-19 Niels Grewe * Source/DKArgument.m: Be more verbose when failing assertions. 2011-02-18 Niels Grewe * 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 * 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 * configure.ac: Fix sel_getType_np check. * configure: Regenerate. 2011-02-16 Niels Grewe * Source/DKPortNameServer.m * Headers/DKPortNameServer.h: Add stub implementation of a port name server. 2011-02-16 Niels Grewe Add missing files. 2011-02-15 Niels Grewe 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 * Source/DKArgument.m: Be explicit about the buffer type for object path arguments when generating standins. 2011-01-10 Niels Grewe * 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 * 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 * 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 * Tests/TestDKMethodCall.m * Tests/TestDKArgument.m: Fix memory leaks in the test suite. 2010-10-19 Niels Grewe * 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 * 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 * ChangLog: Adjust formating. * Tools/dk_make_protocol.m: Point to the correct license file. 2010-09-19 Niels Grewe * 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 * Documentation/Introduction.texi * Documentation/UsingDBus.texi: Documentation fixes. 2010-09-12 Niels Grewe * 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 * 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 * 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 * 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 * 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 * 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 * Documentation/GNUmakefile: Fix copy-and-paste error. 2010-09-11 Niels Grewe * 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 * GNUmakefile: warn if gnustep-make not found 2010-09-09 Niels Grewe * 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 * 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 * 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 * 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 * Documentation/install.texi: Mention the nonstrict flag. * INSTALL: Regenerate. 2010-08-18 Niels Grewe * Source/DKArgument.m: Fix cast 2010-08-17 Niels Grewe * Source/DKNotificationCenter.m: Improve documentation for -[DKObservable matchesUserInfo:], simplified generation of observables by the notification center. 2010-08-16 Niels Grewe * 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 * Examples/Apertium/ApertiumUtilityPanel.h, * Examples/Apertium/ApertiumUtilityPanel.m: Add files missing from last commit. 2010-08-16 Niels Grewe * 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 * Headers/DKNotificationCenter.h: Clarify removal semantics for observations. 2010-08-16 Niels Grewe * Source/DKNotificationCenter.m: More consistent implementation of adding/removing observers. 2010-08-16 Niels Grewe * Headers/DKNotificationCenter.h * Source/DKNotificationCenter.m: Simplify removal of observations. 2010-08-15 Niels Grewe * Documentation/Introduction.texi * Documentation/UsingDBus.texi: Orthographical corrections. 2010-08-15 Niels Grewe * Documentation/DBusKit.texi: Reorder menu. 2010-08-15 Niels Grewe * Documentation/DBusKit.texi * Documentation/ExposingObjects.texi * Documentation/Introduction.texi * Documentation/UsingDBus.texi: Further work on the manual. 2010-08-14 Niels Grewe * 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 * Tools/COPYING * Tools/dk_make_protocol.m: Add license. 2010-08-14 Niels Grewe * 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 * Source/DKInterface.m * Source/DKPort.m * Source/DKProxy.m: A few more documentation improvements. 2010-08-13 Niels Grewe * 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 * 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 * Source/DKNotificationCenter.m: Improve documentation. Fix removal of signal-match from D-Bus. 2010-08-13 Niels Grewe * 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 * 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 * Headers/DKNotificationCenter.h * Source/DKNotificationCenter.m: Implement method to add match rules for signals. 2010-08-09 Niels Grewe * Source/DKEndpoint.m: Remove workaround for some libdbus oddity I was experiencing earlier. 2010-08-09 Niels Grewe * 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 * 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 * Headers/DKNotificationCenter.h * Source/DKNotificationCenter.m: Move rule generation into DKObservable helper-class. 2010-08-08 Niels Grewe * Headers/DKNotificationCenter.h * Source/DKNotificationCenter.m: Remove struct nonsense in favour of real objects. 2010-08-08 Niels Grewe * 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 * Source/DKMethodCall.m: Clarify exception name. 2010-08-07 Niels Grewe * Source/DKNotificationCenter.m: Add methods to generate rules for matching D-Bus signals. 2010-08-07 Niels Grewe * 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 * 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 * Tests/TestDKMethod.m: Add test for copying parts of the introspection graph (fails at the moment). 2010-08-05 Niels Grewe * 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 * 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 * 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 * 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 * Source/DKProxy.m: Attempt to clarify the code path for method lookup. 2010-07-29 Niels Grewe * Source/DKProxy.m: Rename -_methodForSelector:block: to -_methodForSelector:waitForCache:. * Source/DKArgument.m: Add cast that might be needed. 2010-07-29 Niels Grewe * 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 * 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 * 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 * Source/DKEndpoint.m: Prevent libdbus from calling _exit() when the bus goes away. 2010-07-27 Niels Grewe * 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 * Source/DKProxy.m: Only refer to D-Bus methods by their untyped selector IDs. 2010-07-21 Niels Grewe * 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 * 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 * Source/DKEndpoint.m: Improve error reporting. 2010-07-20 Niels Grewe * Source/DKPort.m: Make DKPort check whether the requested remote is available on the bus. 2010-07-19 Niels Grewe * Source/DKProxy.m: Use sel_get_type() instead of accessing a selector's type field directly. 2010-07-19 Niels Grewe * Source/DKPort.m: Move from NSLog() to NSDebugMLog() * Source/DKProxy.[mh]: Move from NSLog() to NSDebugMLog(). Implement -setPrimaryDBusInterface:. 2010-07-19 Niels Grewe * 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 * 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 * 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 * 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 * Source/DKArgument.m: Guard against nil values as arguments. Fix bug in * marshalling variant type arguments. 2010-07-16 Niels Grewe * Source/DKArgument.m: Fix bug where strings would be messed up because of an improper cast. 2010-07-16 Niels Grewe * Tests/GNUmakefile: Keep gnustep-make from installing the testsuite. 2010-07-16 Niels Grewe * Tests/TestDKProxy.m: Add test case for methods that contain boxed and non-boxed arguments. 2010-07-16 Niels Grewe * 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 * 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 * Source/DKIntrospectionNode.m * Source/DKProxy.m: Simplify -proxyParent method. 2010-07-14 Niels Grewe * 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 * Source/DKInterface.m: Remove erratic parentheses around protocol names. 2010-07-13 Niels Grewe * Source/DKArgument.m * Source/DKMethod.m * Source/DKMethodCall.m: Replace side-effect ridden NSAsserts. 2010-07-12 Niels Grewe * 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 * 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 * Source/DKMethodCall.m: Fix statement order and typo. * Source/Tests/TestDKProxy.m: Test for returning errors from D-Bus. 2010-07-12 Niels Grewe * 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 * Source/DKArgument.m: Fix -isDictionary method for array arguments. 2010-07-04 Niels Grewe * Source/DKArgument.m: Remove isa-swizzling in favour of creating the correct objects in the initalizers. 2010-07-03 Niels Grewe * 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 * 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 * configure.ac: Fix autoconf test for location of runtime.h * configure: Regenerate 2010-06-26 Niels Grewe * 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 * Source/DKMethod.h: Fixed missing include. 2010-06-26 Niels Grewe * Source/DKMethod.h: Add (un-)marshalling methods to the header. 2010-06-26 Niels Grewe * 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 * Source/Tests/TestDKArgument.m: Add test for fallback-to-struct feature when encoding dictionaries to variant types. 2010-06-26 Niels Grewe * 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 * 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 * Source/DKArgument.m: Implement unmarshalling D-Bus variant types. 2010-06-21 Niels Grewe * Source/DKArgument.m: (Un-)marshalling of D-Bus structs. 2010-06-21 Niels Grewe * Source/DKArgument.m: Finish (un-)marshalling of dictionaries. 2010-06-20 Niels Grewe * Source/DKArgument.m: Implement unmarshalling of D-Bus dictionaries. 2010-06-20 Niels Grewe * Source/DKArgument.m: WIP (un-)marshalling of complex types. 2010-06-18 Niels Grewe * 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 * Source/DKMethod.h, Source/DKMethod.m: Remove leftover duplicate code. 2010-06-15 Niels Grewe * 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 * 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 * Source/DKMethod.h * Source/DKMethod.m, Source/Tests/TestDKMethod.m: Make DKMethod generate method declarations. 2010-06-14 Niels Grewe * 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 * 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 * 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 * Source/DKArgument.m: short is apparently always 16bit. 2010-06-11 Niels Grewe * Source/DKArgument.m: Fix unboxing of doubles. * Source/Tests/TestDKArgument.m: Add test cases for unboxing. 2010-06-11 Niels Grewe * Source/DKArgument.h * Source/DKArgument.m * Source/DKProxy.m: Implement unboxing of simple types. Fix boxing of 64bit values. 2010-06-11 Niels Grewe * 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 * 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 * 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 * Source/GNUmakefile * Source/GNUmakefile.postamble: Provide link to public headers when compiling the tests. 2010-06-09 Niels Grewe * 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 * 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 * Source/DKArgument.h * Source/DKArgument.m: Support generating D-Bus type signatures from DKArgument trees. 2010-06-07 Niels Grewe * 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 * Source/DKArgument.m: Place -release call properly. Thanks to Fred Kiefer for pointing that out. 2010-06-07 Niels Grewe * Source/DKArgument.h * Source/DKArgument.m * Source/DKEndpoint.m, * Source/GNUmakefile: WIP representation of D-Bus argument information. 2010-05-31 Niels Grewe * Source/DKPort.m: Simpify DKPort a bit. 2010-05-31 Niels Grewe * 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 * 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 * Source/DKPort.m: Call self instead of super for DKPort subclass initializers. 2010-05-26 Niels Grewe * 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 * 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 * . * 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.