Api level 3 - fpaut/cloudeebus GitHub Wiki


Javascript objects and interfaces

Following is a brief description of the cloudeebus Javascript objects and their methods. This API is designed to be somewhat similar to the higher level dbus-python APIs. All asynchronous methods take optional success and error callbacks.


cloudeebus Object

There is one global instance of the cloudeebus object created when cloudeebus.js is loaded. It manages the initial connection to the server, and holds the Session and System bus connection.

Attributes

version : current version of the Javascript library
minVersion : minimum supported version of the Python server

Methods

cloudeebus.connect(uri, manifest, successCB, errorCB)

Connection to the cloudeebus.py server. Returns nothing.

uri : websocket uri, for instance ws://localhost:9000
manifest : A json manifest. See the "managing security" section for an example. When server runs in --opendoor mode, pass null.
successCB : callback fired when connection succeeds, takes no argument.
errorCB : callback fired when connection fails, takes error message string for argument.

cloudeebus.SessionBus()

Returns a cloudeebus.BusConnection object holding a connection to the Session bus.

cloudeebus.SystemBus()

Returns a cloudeebus.BusConnection object holding a connection to the System bus.

cloudeebus.log(message)

Does nothing. Replace by your custom method to display internal error messages, for instance:

cloudeebus.log = function(msg) {
	alert(msg);
}

cloudeebus.BusConnection Interface

A BusConnection object holds a connection to the Session bus or the System bus, for instance:

var bus = cloudeebus.SessionBus();

Methods

getObject(busName, objectPath, introspectCB, errorCB)

Returns a cloudeebus.ProxyObject object that can call DBus methods and be registered for DBus signals.

busName : DBus service, for instance org.gnome.ScreenSaver
objectPath : Object for which to get the proxy, for instance /
introspectCB : Optional callback. If passed, the object is introspected, i.e. populated with its methods and attributes and passed to the callback as argument.
errorCB : Optional callback fired on introspection error, takes error message string for argument.


cloudeebus.ProxyObject Interface

A ProxyObject is a proxy to a remote DBus objects, with its methods and attributes, for instance:

var obj = bus.getObject("org.gnome.ScreenSaver", "/");

Attributes

busName : DBus service for this object.
objectPath : DBus path for this object.
interfaceProxies : Dictionary of cloudeebus.ProxyObject objects indexed by interfaces.

If the object is introspected, i.e. if a introspectCB callback was passed to bus.getObject, then it also has the DBus Properties of the remote object as attributes.

Methods

callMethod(ifName, method, args, successCB, errorCB)

Calls a DBus method on the proxy object. Returns nothing.

ifName : Interface name, for instance org.gnome.ScreenSaver
method : Name of the method to call, for instance SetActive
args : Argument list for the method, for instance [true]
successCB : Optional callback fired when method is completed successfully, takes the dbus method results for arguments.
errorCB : Optional callback fired on error, takes error message string for argument.

If the object is introspected then the method can be called directly by its name, for instance in the example above, callbacks omitted:
obj.SetActive(true)
instead of:
obj.callMethod("org.gnome.ScreenSaver", "SetActive", [true])

getInterface(ifName)

Use on introspected objects. Returns a version of this cloudeebus.ProxyObject with only attributes and methods of interface which name is passed as parameter. This is useful if the object implements interfaces with conflicting method or attribute names.

ifName : Interface name, for instance org.gnome.ScreenSaver
Interface objects are stored in the interfaceProxies dictionary. Iterate on the dictionary to get interfaces name.

connectToSignal(ifName, signal, handlerCB, errorCB)

Connects the proxy object to a DBus signal. Returns nothing.

ifName : Interface name, for instance org.gnome.ScreenSaver
signal : Name of the signal to register for, for instance ActiveChanged
handlerCB : Signal handler callback, fired when the signal is emitted. Takes the dbus signal data for arguments.
errorCB : Optional callback fired on error, takes error message string for argument.

disconnectSignal(ifName, signal)

Disconnects the proxy object from a DBus signal. Returns nothing.

ifName : Interface name, for instance org.gnome.ScreenSaver
signal : Name of the signal to register for, for instance ActiveChanged


Example

The following example locks the screen. No manifest is passed, so the server must be executed in --opendoor mode, for instance:

cloudeebus.py --debug --opendoor --port=9001

The Javascript code connects to cloudeebus without a manifest, gets an introspected proxy for the screen saver root object on the session bus, and locks the screen.

function connectSuccess() {
	var bus = cloudeebus.SessionBus();
	bus.getObject("org.gnome.ScreenSaver", "/", lock);
}

function lock(proxy) {
	proxy.SetActive(true);
}

cloudeebus.connect("ws://localhost:9001", null, connectSuccess);