src/cm/media/js/lib/yui/yui_3.0.0b1/build/io/io-queue.js
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 0 40c8f766c9b8
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     1
/*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     2
Copyright (c) 2009, Yahoo! Inc. All rights reserved.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     3
Code licensed under the BSD License:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     4
http://developer.yahoo.net/yui/license.txt
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     5
version: 3.0.0b1
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     6
build: 1163
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     7
*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     8
YUI.add('io-queue', function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     9
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    10
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    11
    * Extends the IO base class to implement Queue for synchronous
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    12
    * transaction processing.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    13
	* @module io
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    14
	* @submodule io-queue
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    15
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    16
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    17
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    18
	* @description Array of transactions queued for processing
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    19
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    20
	* @property _yQ
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    21
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    22
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    23
	* @type Object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    24
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    25
	var _q = new Y.Queue(),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    26
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    27
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    28
	* @description Reference to "io:complete" event handler.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    29
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    30
	* @property _e
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    31
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    32
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    33
	* @type Object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    34
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    35
	_e,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    36
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    37
	_activeId,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    38
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    39
	* @description Property to determine whether the queue is set to
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    40
	* 1 (active) or 0 (inactive).  When inactive, transactions
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    41
	* will be stored in the queue until the queue is set to active.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    42
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    43
	* @property _qState
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    44
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    45
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    46
	* @type int
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    47
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    48
	_qState = 1;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    49
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    50
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    51
	* @description Method for requesting a transaction, and queueing the
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    52
	* request before it is sent to the resource.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    53
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    54
	* @method _queue
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    55
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    56
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    57
	* @return Object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    58
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    59
	function _queue(uri, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    60
		var o = { uri: uri, id: Y.io._id(), cfg:c };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    61
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    62
		_q.add(o);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    63
		if (_qState === 1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    64
			_shift();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    65
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    66
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    67
		return o;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    68
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    69
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    70
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    71
	* @description Method Process the first transaction from the
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    72
	* queue in FIFO order.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    73
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    74
	* @method _shift
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    75
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    76
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    77
	* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    78
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    79
	function _shift() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    80
		var o = _q.next();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    81
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    82
		_activeId = o.id;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    83
		_qState = 0;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    84
		Y.io(o.uri, o.cfg, o.id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    85
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    86
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    87
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    88
	* @description Method for promoting a transaction to the top of the queue.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    89
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    90
	* @method _unshift
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    91
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    92
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    93
	* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    94
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    95
	function _unshift(o) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    96
		_q.promote(o);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    97
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    98
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    99
	function _next(id) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   100
		_qState = 1;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   101
		if (_activeId === id && _q.size() > 0) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   102
			_shift();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   103
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   104
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   105
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   106
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   107
	* @description Method for removing a specific, pending transaction from
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   108
	* the queue.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   109
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   110
	* @method _remove
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   111
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   112
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   113
	* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   114
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   115
	function _remove(o) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   116
		_q.remove(o);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   117
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   118
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   119
	function _start() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   120
		_qState = 1;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   121
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   122
		if (_q.size() > 0) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   123
			_shift();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   124
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   125
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   126
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   127
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   128
	* @description Method for setting queue processing to inactive.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   129
	* Transaction requests to YUI.io.queue() will be stored in the queue, but
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   130
	* not processed until the queue is reset to "active".
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   131
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   132
	* @method _stop
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   133
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   134
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   135
	* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   136
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   137
	function _stop() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   138
		_qState = 0;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   139
	};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   140
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   141
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   142
	* @description Method to query the current size of the queue.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   143
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   144
	* @method _size
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   145
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   146
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   147
	* @return int
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   148
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   149
	function _size() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   150
		return _q.size();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   151
	};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   152
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   153
	_e = Y.on('io:complete', function(id) { _next(id); }, Y.io);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   154
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   155
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   156
	* @description Method to query the current size of the queue, or to
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   157
	* set a maximum queue size.  This is the interface for _size().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   158
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   159
	* @method size
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   160
	* @public
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   161
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   162
	* @param {number} i - Specified maximum size of queue.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   163
    * @return number
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   164
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   165
	_queue.size = _size;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   166
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   167
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   168
	* @description Method for setting the queue to active. If there are
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   169
	* transactions pending in the queue, they will be processed from the
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   170
	* queue in FIFO order. This is the interface for _start().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   171
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   172
	* @method start
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   173
	* @public
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   174
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   175
    * @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   176
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   177
	_queue.start = _start;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   178
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   179
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   180
	* @description Method for setting queue processing to inactive.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   181
	* Transaction requests to YUI.io.queue() will be stored in the queue, but
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   182
	* not processed until the queue is restarted. This is the
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   183
	* interface for _stop().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   184
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   185
	* @method stop
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   186
	* @public
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   187
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   188
    * @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   189
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   190
	_queue.stop = _stop;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   191
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   192
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   193
	* @description Method for promoting a transaction to the top of the queue.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   194
	* This is the interface for _unshift().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   195
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   196
	* @method promote
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   197
	* @public
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   198
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   199
	* @param {Object} o - Reference to queued transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   200
    * @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   201
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   202
	_queue.promote = _unshift;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   203
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   204
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   205
	* @description Method for removing a specific, pending transaction from
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   206
	* the queue. This is the interface for _purge().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   207
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   208
	* @method purge
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   209
	* @public
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   210
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   211
	* @param {Object} o - Reference to queued transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   212
    * @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   213
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   214
	_queue.remove = _remove;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   215
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   216
    Y.mix(Y.io, {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   217
		queue: _queue
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   218
    }, true);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   219
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   220
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   221
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   222
}, '3.0.0b1' ,{requires:['io-base']});