datasource-io-debug.js revision 2fe13ddab136a6eb6239d89e5e064e09d9e1bb92
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Provides a DataSource implementation which can be used to retrieve data via the IO Utility.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @module datasource
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @submodule datasource-io
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * IO subclass for the DataSource Utility.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @class DataSource.IO
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @extends DataSource.Local
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @constructor
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glassvar DSIO = function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass DSIO.superclass.constructor.apply(this, arguments);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // DataSource.IO static properties
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Class name.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @property NAME
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type String
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @value "dataSourceIO"
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // DataSource.IO Attributes
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass /////////////////////////////////////////////////////////////////////////////
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Pointer to IO Utility.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @attribute io
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type Y.io
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @default Y.io
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Default IO Config.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @attribute ioConfig
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type Object
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @default null
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Internal init() handler.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method initializer
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @param config {Object} Config object.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._queue = {interval:null, conn:null, requests:[]};
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * IO success callback.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method successHandler
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @param id {String} Transaction ID.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @param response {String} Response.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @param e {Event.Facade} Event facade.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass Y.log("Received IO data response for \"" + e.request + "\"", "info", "datasource-io");
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if (defIOConfig && defIOConfig.on && defIOConfig.on.success) {
2fe13ddab136a6eb6239d89e5e064e09d9e1bb92Luke Smith defIOConfig.on.success.apply(defIOConfig.context || Y, arguments);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * IO failure callback.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method failureHandler
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @param id {String} Transaction ID.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @param response {String} Response.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @param e {Event.Facade} Event facade.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass Y.log("IO data failure", "error", "datasource-io");
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass Y.log("Received IO data failure for \"" + e.request + "\"", "info", "datasource-io");
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if (defIOConfig && defIOConfig.on && defIOConfig.on.failure) {
2fe13ddab136a6eb6239d89e5e064e09d9e1bb92Luke Smith defIOConfig.on.failure.apply(defIOConfig.context || Y, arguments);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @property _queue
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Object literal to manage asynchronous request/response
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * cycles enabled if queue needs to be managed (asyncMode/ioConnMode):
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * <dt>interval {Number}</dt>
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * <dd>Interval ID of in-progress queue.</dd>
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * <dt>conn</dt>
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * <dd>In-progress connection identifier (if applicable).</dd>
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * <dt>requests {Object[]}</dt>
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * <dd>Array of queued request objects: {request:request, callback:callback}.</dd>
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type Object
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @default {interval:null, conn:null, requests:[]}
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Passes query string to IO. Fires <code>response</code> event when
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * response is received asynchronously.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _defRequestFn
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @param e {Event.Facade} Event Facade with the following properties:
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * <dt>tId (Number)</dt> <dd>Unique transaction ID.</dd>
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * <dt>request (Object)</dt> <dd>The request.</dd>
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * <dt>callback (Object)</dt> <dd>The callback object with the following properties:
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * <dt>success (Function)</dt> <dd>Success handler.</dd>
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * <dt>failure (Function)</dt> <dd>Failure handler.</dd>
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * <dt>cfg (Object)</dt> <dd>Configuration object.</dd>
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @protected
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _defRequestFn: function(e) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass "arguments": e
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // Support for POST transactions
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if(cfg.method && (cfg.method.toUpperCase() === "POST")) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass Y.DataSource.Local.transactions[e.tId] = io(uri, cfg);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass}, '@VERSION@' ,{requires:['datasource-local', 'io-base']});