DBusKit - Integrating GNUstep Applications with „Foreign“ Desktop ...
Recommend Documents
to easily convert ordinary graphical user interfaces into tactile representation. .... Display handlers converting the bitmap into appropriate pin state definitions can ...
using applications built in Adobe Flex and Microsoft Silverlight. ..... Weblogs (
commonly known as Blogs), RSS news feeds, Wikipedia, YouTube, or other ser-.
using applications built in Adobe Flex and Microsoft Silverlight. ..... Weblogs (
commonly known as Blogs), RSS news feeds, Wikipedia, YouTube, or other ser-.
Microsoft SharePoint Workspace. 2010. MS Expression Web. 4. MS Windows 7.
SP1. PrintShop_A190. Office and Legal Applications Fall 2013. Software:.
PDF Download Cross Platform Desktop Applications Full Online, epub free Cross Platform Desktop Applications by Paul B. J
However, in the Microsoft Windows and Apple Mac OS X worlds, the dominance of. C#/.NET and Objective-C/Cocoa means that
web framework, and the creator of Dashku, a realtime dashboard solution. ... Platform Desktop Applications: With Node, E
language to start reading literature is acquired at the earliest in the second year.
Lack of ... the focus is on the position of literature in foreign language teaching.
The aim of the proposed system is to create an immersive audio environment for desktop applications without using headphones. It allows the spatialisation of ...
Volume 7, Number 13 http://isedj.org/7/13/. March 25, 2009. In this issue: Using Remote Desktop Applications in Education. Dan Hutchison. Ernst Bekkering.
The Android operating system runs atop the Linux ... Runner, an Android application running on top of a ..... [3] Android 1.6 Ndk, Release 1. http://developer.
PDF Download Cross Platform Desktop Applications Full Online, epub free Cross Platform Desktop .... they only have to wr
The aim of the proposed system is to create an immersive audio environment for desktop applications without using headphones. It allows the spatialisation of ...
Platform Desktop Applications: Using Node, Electron, and NW.js, read online free .... About the Technology Desktop appli
download books to read online for free Cross-Platform Desktop Applications: With Node, Electron, and NW.js downloading f
Runner, an Android application running on top of a .... Running the bootdeb script with the command .... within Android, and provides a solid foundation for fu-.
project, so developers have full access to all local files and resources. The ... bottlenecks with NW.j's browser develo
... and Applications for Desktop Web and Mobile PDF Free Download Reviews ..... SDKsBuild browser-based applications wit
Feb 18, 2013 - study the scheduling of tightly-coupled iterative master- worker applications ...... Our proactive heuristics are designed as follows. Consider an ...
web framework, and the creator of Dashku, a realtime dashboard solution. ... With Node, Electron, and NW.js site for fre
PDF Download Cross Platform Desktop Applications Full Online, epub free Cross .... time-consuming to create OS-specific
foreign languages, which have no immediate local uses or speakers. ..... Mohrmann, A. Sommerfelt, & J. Whatmough (Eds.), Trends in European and American.
gram or adding data to an online mapping tool (creating a. âmash-upâ). A GIS can ..... click View on the Menu Bar and then Add Theme from the drop-down menu ...
May 16, 2003 - Integrating Control Systems to Beam ... Abstract. High level beam dynamics applications typically require access to ... mote method invocations.
DBusKit - Integrating GNUstep Applications with „Foreign“ Desktop ...
Feb 5, 2011 ... Bus: D-Bus runs as a daemon that acts as a name service and ... D-Bus
typesystem native Objective-C type system custom D-Bus type sys-.
DBusKit Integrating GNUstep Applications with ‘Foreign’ Desktop Environments
Niels Grewe
February 5th, 2011
1
Distributed Objects
2
I
OpenStep/GNUstep/Cocoa specific IPC system
I
Design philosophy: It shouldn’t matter whether an object was created in a different process, or even on a different machine.
I
Obtain a proxy for the remote object and use it like a local object:
Distributed Objects
I
OpenStep/GNUstep/Cocoa specific IPC system
I
Design philosophy: It shouldn’t matter whether an object was created in a different process, or even on a different machine.
I
Obtain a proxy for the remote object and use it like a local object: NSPort *sp = [[NSPortNameServer systemDefaultPortNameServer] portForName: @"RemoteService"]; NSConnection *c = [NSConnection connectionWithReceivePort: [NSPort port] sendPort: sp]; id remoteObject = [c rootProxy]; [remoteObject doStuffAsUsual];
2
Distributed Objects
I
OpenStep/GNUstep/Cocoa specific IPC system
I
Design philosophy: It shouldn’t matter whether an object was created in a different process, or even on a different machine.
I
Obtain a proxy for the remote object and use it like a local object: NSPort *sp = [[NSPortNameServer systemDefaultPortNameServer] portForName: @"RemoteService"]; NSConnection *c = [NSConnection connectionWithReceivePort: [NSPort port] sendPort: sp]; id remoteObject = [c rootProxy]; [remoteObject doStuffAsUsual];
I
2
Elegant, easy to use, intelligent
Why support D-Bus as well?
I
Wide adoption: I I I I I I I
I
Allows deeper integration into non-GNUstep desktop environments through standard services, e.g.: I I I
3
HAL/UDisks/UPower Bluez NetworkManager Avahi GeoClue Gnome KDE
Bus: D-Bus runs as a daemon that acts as a name service and as a message broker between applications. Service: Every application on the bus acts as a service that gets one unique name and can request additional names (e.g. ‘org.foo.TextEditor’). Object path: Every service exposes all vended objects in an explicit tree structure. Interface: Methods that can be called on objects are aggregated in interfaces (think Objective-C protocols, but with polymorphism). Signal: Broadcast information is delivered through signals to subscribing applications.
4
Comparison: GNUstep DO vs. D-Bus Feature
Distributed Objects
D-Bus
type system
native Objective-C type system Objective-C
custom D-Bus type system (C-like) many languages through bindings
supported programming languages polymorphism no special provisions
object-graph generation name service delivery of broadcast information
5
implicit provided by separate nameserver objects distributed notification system implemented on top of DO
through overloaded method names in different interfaces explicit with named objects integrated integrated as D-Bus signals
DBusKit: Bringing D-Bus to GNUstep
I
6
Using the libdbus low-level API adds needless complexity and repetition.
DBusKit: Bringing D-Bus to GNUstep
6
I
Using the libdbus low-level API adds needless complexity and repetition.
I
Example 1: Using libdbus, etoile system needs 100 loc of boiler-plate code just to call the suspend/shutdown/reboot methods of HAL.
DBusKit: Bringing D-Bus to GNUstep
6
I
Using the libdbus low-level API adds needless complexity and repetition.
I
Example 1: Using libdbus, etoile system needs 100 loc of boiler-plate code just to call the suspend/shutdown/reboot methods of HAL.
I
Example 2: Zeroconf/Bonjour support in gnustep-base is provided by Avahi. The Avahi C-API is a superficial wrapper around the D-Bus APIs. Using the wrapper layer accounts for roughly 17% (=430 loc) of all Avahi-related code in gnustep-base.
DBusKit: Bringing D-Bus to GNUstep
6
I
Using the libdbus low-level API adds needless complexity and repetition.
I
Example 1: Using libdbus, etoile system needs 100 loc of boiler-plate code just to call the suspend/shutdown/reboot methods of HAL.
I
Example 2: Zeroconf/Bonjour support in gnustep-base is provided by Avahi. The Avahi C-API is a superficial wrapper around the D-Bus APIs. Using the wrapper layer accounts for roughly 17% (=430 loc) of all Avahi-related code in gnustep-base.
I
GNUstep needs proper bindings for D-Bus:
DBusKit: Bringing D-Bus to GNUstep
I
Using the libdbus low-level API adds needless complexity and repetition.
I
Example 1: Using libdbus, etoile system needs 100 loc of boiler-plate code just to call the suspend/shutdown/reboot methods of HAL.
I
Example 2: Zeroconf/Bonjour support in gnustep-base is provided by Avahi. The Avahi C-API is a superficial wrapper around the D-Bus APIs. Using the wrapper layer accounts for roughly 17% (=430 loc) of all Avahi-related code in gnustep-base.
I
GNUstep needs proper bindings for D-Bus:
DBusKit
6
DBusKit Quick Facts
I
Work begun as part of Google Summer of Code 2010.
I
LGPL licensed. Roughly 8k loc, at the moment.
I
7
I
Complete implementation of outgoing D-Bus support (you can use D-Bus objects from Objective-C code without limitation).
I
Follows Objective-C conventions (like Distributed Objects) as closely as possible.
I
No release yet. (coming soon!)
DBusKit Architecture NSRunLoop-Integration Layer I
Handles interaction with the D-Bus daemons using libdbus primitives
I
Presently being rewritten to support robust multithreaded operation
D-Bus↔Objective-C Translation Layer I
Uses D-Bus introspection data to map D-Bus entities to their Objective-C equivalents: I I
I I I I
D-Bus interface → Objective-C protocol D-Bus object-path nodes → DKProxy (NSProxy subclass for use with D-Bus) D-Bus properties → Accessor/mutator methods D-Bus signal → NSNotification NSInvocation → D-Bus Method call D-Bus Method reply → NSInvocation
DO Convenience Layer I
8
Provides NSConnection methods and the DKPort class to provide a familiar abstraction for Objective-C programmers.
Flexible method generation D-Bus XML introspection data: Is turned into:
9
Flexible method generation D-Bus XML introspection data: Is turned into: - (NSNumber*)NameHasOwner: (NSString*)argument1;
9
Flexible method generation D-Bus XML introspection data: Is turned into: - (NSNumber*)NameHasOwner: (NSString*)argument1; - (BOOL)NameHasOwner: (char*)argument1;
9
Flexible method generation D-Bus XML introspection data: Is turned into: - (NSNumber*)NameHasOwner: (NSString*)argument1; - (BOOL)NameHasOwner: (char*)argument1; - (BOOL)NameHasOwner: (NSString*)argument1;