/** * @fileOverview * Documentation of a DIM service Subscription */ /** * @class * * Creates a handle to a new thread. The handle can be used to * kill the thread or be ignored. The function provided is * executed after an initial timeout. Note that although this * looks similar to the setTimeout in web-browsers, after started, * the thread will not run until completion but run in parallel to * the executed script.

* * Note that although the object is created with 'new' and there * is a 'delete' is JavaScript, it will not call any kind of * destructor. To close a Subscription you have to explicitly call * the close() member function. 'delete' in JavaScript is only * to remove a property from an Object. * * @param {Integer} timeout * A positive integer given the initial delay in milliseconds before * the thread is executed. * * @param {Function} function * A function which is executed aftr the initial timeout. * * @throws *

  • If number or type of arguments is wrong * * @example * var handle = new Thread(100, function() { dim.out("Hello world!"); }); * handle.kill(); */ function Subscription(service) { /** * * The name of the service subscribed to. * * @constant * @type String * */ this.name = service; /** * * Boolean value which is set to false if the Subscription was closed. * * @type Boolean * */ this.isOpen = false; /** * * Callback in case of event reception. * * To install a callback in case a new event of this Subscription * was received, set this property to a function. The argument * provided to the function is identical with the object returned * by Subscription.get(). For the code executed, the same rules apply * than for a thread created with Thread. * * @type Function * * @example * subscription.onchange = function(event) { dim.out(JSON.stringify(event); }; * */ this.onchange = func; /** * * Returns the last received event of this subscription. * * @param {Integer} [timeout=0] * A timeout in millisecond to wait for an event to arrive. * This timeout only applied if no event has been received yet * after a new Subscription has been created. If an event * is already available, the event is received. If the timeout * is 'null', waiting will nevr timeout until an event was received. * If the timeout is less than zero, no exception will be thrown, * but 'undefined' returned in case of timeout. The corresponding * timeout is then Math.abs(timeout). * * @param {Boolean} [requireNamed=true] * Usually an event is only considered complete, if also the * corresponding decription is available distcibuted through * the service SERVER/SERVICE_DESC. If an event has no * subscription or it is not important, requireNamed can * be set to false. * * @throws *
  • If number or type of arguments is wrong *
  • After a timeout, if the timeout value was greater or equal zero *
  • If conversion of th received data to an event object has failed * * @returns {Event} * If the thread was still known, true is returned, false * otherwise. If the thread terminated already, false is * returned. * */ this.get = function() { /* [native code] */ } /** * * Unsubscribe from an existing subscription. Note that all open * subscription produce network traffic and should be omitted if * not needed. * * @returns {Boolean} * true if the subscription was still open, false if it was * already closed. * */ this.close() = function() { /* [native code] */ } }