PluginProbe
Booking Calendar / 10.11
Booking Calendar v10.11
11.8.4 11.8.3 11.8.2 11.8.1 11.8 11.7 11.6.1 11.6 11.5 11.4.3 11.4.2 11.4.1 11.4 11.3 11.2.1 11.2 11.1 11.0 10.15.7 10.15.6 10.1.3 10.10 10.10.1 10.10.2 10.11 All 204 releases
booking / includes / __js / client / load_balancer / ajx_load_balancer.js

ajx_load_balancer.js in Booking Calendar 10.11, at includes/__js/client/load_balancer/ajx_load_balancer.js

263 lines 6.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * Extend _wpbc with new methods // FixIn: 9.8.6.2.
3 *
4 * @type {*|{}}
5 * @private
6 */
7 _wpbc = (function ( obj, $) {
8
9 // Load Balancer -----------------------------------------------------------------------------------------------
10
11 var p_balancer = obj.balancer_obj = obj.balancer_obj || {
12 'max_threads': 2,
13 'in_process' : [],
14 'wait' : []
15 };
16
17 /**
18 * Set max parallel request to load
19 *
20 * @param max_threads
21 */
22 obj.balancer__set_max_threads = function ( max_threads ){
23
24 p_balancer[ 'max_threads' ] = max_threads;
25 };
26
27 /**
28 * Check if balancer for specific booking resource defined :: true | false
29 *
30 * @param {string|int} resource_id
31 * @returns {boolean}
32 */
33 obj.balancer__is_defined = function ( resource_id ) {
34
35 return ('undefined' !== typeof( p_balancer[ 'balancer_' + resource_id ] ) );
36 };
37
38
39 /**
40 * Create balancer initializing
41 *
42 * @param {string|int} resource_id
43 */
44 obj.balancer__init = function ( resource_id, function_name , params ={}) {
45
46 var balance_obj = {};
47 balance_obj[ 'resource_id' ] = resource_id;
48 balance_obj[ 'priority' ] = 1;
49 balance_obj[ 'function_name' ] = function_name;
50 balance_obj[ 'params' ] = wpbc_clone_obj( params );
51
52
53 if ( obj.balancer__is_already_run( resource_id, function_name ) ){
54 return 'run';
55 }
56 if ( obj.balancer__is_already_wait( resource_id, function_name ) ){
57 return 'wait';
58 }
59
60
61 if ( obj.balancer__can_i_run() ){
62 obj.balancer__add_to__run( balance_obj );
63 return 'run';
64 } else {
65 obj.balancer__add_to__wait( balance_obj );
66 return 'wait';
67 }
68 };
69
70 /**
71 * Can I Run ?
72 * @returns {boolean}
73 */
74 obj.balancer__can_i_run = function (){
75 return ( p_balancer[ 'in_process' ].length < p_balancer[ 'max_threads' ] );
76 }
77
78 /**
79 * Add to WAIT
80 * @param balance_obj
81 */
82 obj.balancer__add_to__wait = function ( balance_obj ) {
83 p_balancer['wait'].push( balance_obj );
84 }
85
86 /**
87 * Remove from Wait
88 *
89 * @param resource_id
90 * @param function_name
91 * @returns {*|boolean}
92 */
93 obj.balancer__remove_from__wait_list = function ( resource_id, function_name ){
94
95 var removed_el = false;
96
97 if ( p_balancer[ 'wait' ].length ){ // FixIn: 9.8.10.1.
98 for ( var i in p_balancer[ 'wait' ] ){
99 if (
100 (resource_id === p_balancer[ 'wait' ][ i ][ 'resource_id' ])
101 && (function_name === p_balancer[ 'wait' ][ i ][ 'function_name' ])
102 ){
103 removed_el = p_balancer[ 'wait' ].splice( i, 1 );
104 removed_el = removed_el.pop();
105 p_balancer[ 'wait' ] = p_balancer[ 'wait' ].filter( function ( v ){
106 return v;
107 } ); // Reindex array
108 return removed_el;
109 }
110 }
111 }
112 return removed_el;
113 }
114
115 /**
116 * Is already WAIT
117 *
118 * @param resource_id
119 * @param function_name
120 * @returns {boolean}
121 */
122 obj.balancer__is_already_wait = function ( resource_id, function_name ){
123
124 if ( p_balancer[ 'wait' ].length ){ // FixIn: 9.8.10.1.
125 for ( var i in p_balancer[ 'wait' ] ){
126 if (
127 (resource_id === p_balancer[ 'wait' ][ i ][ 'resource_id' ])
128 && (function_name === p_balancer[ 'wait' ][ i ][ 'function_name' ])
129 ){
130 return true;
131 }
132 }
133 }
134 return false;
135 }
136
137
138 /**
139 * Add to RUN
140 * @param balance_obj
141 */
142 obj.balancer__add_to__run = function ( balance_obj ) {
143 p_balancer['in_process'].push( balance_obj );
144 }
145
146 /**
147 * Remove from RUN list
148 *
149 * @param resource_id
150 * @param function_name
151 * @returns {*|boolean}
152 */
153 obj.balancer__remove_from__run_list = function ( resource_id, function_name ){
154
155 var removed_el = false;
156
157 if ( p_balancer[ 'in_process' ].length ){ // FixIn: 9.8.10.1.
158 for ( var i in p_balancer[ 'in_process' ] ){
159 if (
160 (resource_id === p_balancer[ 'in_process' ][ i ][ 'resource_id' ])
161 && (function_name === p_balancer[ 'in_process' ][ i ][ 'function_name' ])
162 ){
163 removed_el = p_balancer[ 'in_process' ].splice( i, 1 );
164 removed_el = removed_el.pop();
165 p_balancer[ 'in_process' ] = p_balancer[ 'in_process' ].filter( function ( v ){
166 return v;
167 } ); // Reindex array
168 return removed_el;
169 }
170 }
171 }
172 return removed_el;
173 }
174
175 /**
176 * Is already RUN
177 *
178 * @param resource_id
179 * @param function_name
180 * @returns {boolean}
181 */
182 obj.balancer__is_already_run = function ( resource_id, function_name ){
183
184 if ( p_balancer[ 'in_process' ].length ){ // FixIn: 9.8.10.1.
185 for ( var i in p_balancer[ 'in_process' ] ){
186 if (
187 (resource_id === p_balancer[ 'in_process' ][ i ][ 'resource_id' ])
188 && (function_name === p_balancer[ 'in_process' ][ i ][ 'function_name' ])
189 ){
190 return true;
191 }
192 }
193 }
194 return false;
195 }
196
197
198
199 obj.balancer__run_next = function (){
200
201 // Get 1st from Wait list
202 var removed_el = false;
203 if ( p_balancer[ 'wait' ].length ){ // FixIn: 9.8.10.1.
204 for ( var i in p_balancer[ 'wait' ] ){
205 removed_el = obj.balancer__remove_from__wait_list( p_balancer[ 'wait' ][ i ][ 'resource_id' ], p_balancer[ 'wait' ][ i ][ 'function_name' ] );
206 break;
207 }
208 }
209
210 if ( false !== removed_el ){
211
212 // Run
213 obj.balancer__run( removed_el );
214 }
215 }
216
217 /**
218 * Run
219 * @param balance_obj
220 */
221 obj.balancer__run = function ( balance_obj ){
222
223 switch ( balance_obj[ 'function_name' ] ){
224
225 case 'wpbc_calendar__load_data__ajx':
226
227 // Add to run list
228 obj.balancer__add_to__run( balance_obj );
229
230 wpbc_calendar__load_data__ajx( balance_obj[ 'params' ] )
231 break;
232
233 default:
234 }
235 }
236
237 return obj;
238
239 }( _wpbc || {}, jQuery ));
240
241
242 /**
243 * -- Help functions ----------------------------------------------------------------------------------------------
244 */
245
246 function wpbc_balancer__is_wait( params, function_name ){
247 //console.log('::wpbc_balancer__is_wait',params , function_name );
248 if ( 'undefined' !== typeof (params[ 'resource_id' ]) ){
249
250 var balancer_status = _wpbc.balancer__init( params[ 'resource_id' ], function_name, params );
251
252 return ( 'wait' === balancer_status );
253 }
254
255 return false;
256 }
257
258
259 function wpbc_balancer__completed( resource_id , function_name ){
260 //console.log('::wpbc_balancer__completed',resource_id , function_name );
261 _wpbc.balancer__remove_from__run_list( resource_id, function_name );
262 _wpbc.balancer__run_next();
263 }