@@ -34,6 +34,9 @@ using pman.async.Asyncs;
34
34
using pman .async .VoidAsyncs ;
35
35
using pman .bg .DictTools ;
36
36
37
+ /**
38
+ load data for a list of Tracks as quickly as possible
39
+ **/
37
40
@:access ( pman.media. Track )
38
41
class EfficientTrackListDataLoader extends Task1 {
39
42
/* Constructor Function */
@@ -55,7 +58,7 @@ class EfficientTrackListDataLoader extends Task1 {
55
58
* execute [this] Task
56
59
*/
57
60
override function execute (done : VoidCb ): Void {
58
- trace (' Starting EfficientTrackListDataLoader' );
61
+ // trace('Starting EfficientTrackListDataLoader');
59
62
var uris : Array <String > = new Array ();
60
63
for (track in tracks ) {
61
64
uris .push ( track .uri );
@@ -126,6 +129,7 @@ class EfficientTrackListDataLoader extends Task1 {
126
129
127
130
var track : Track ;
128
131
var data : TrackData ;
132
+
129
133
for (row in rows ) {
130
134
track = treg [row .uri ];
131
135
data = new TrackData ( track );
@@ -159,9 +163,6 @@ class EfficientTrackListDataLoader extends Task1 {
159
163
* perform database-writes
160
164
*/
161
165
private function perform_writes (done : VoidCb ): Void {
162
- // writes.start(function() {
163
- // done();
164
- // });
165
166
writes .series ( done );
166
167
}
167
168
@@ -211,17 +212,19 @@ class EfficientTrackListDataLoader extends Task1 {
211
212
}
212
213
}
213
214
214
- var cpb = exec .createBatch ();
215
- for (create in creates )
216
- cpb .asyncTask (cast create );
215
+ // var cpb = exec.createBatch();
216
+ // for (create in creates)
217
+ // cpb.asyncTask(cast create);
217
218
218
- for (push in pushes )
219
- cpb .asyncTask (cast push );
219
+ // for (push in pushes)
220
+ // cpb.asyncTask(cast push);
220
221
221
- cpb .start (function () {
222
- done ();
223
- });
224
- // [creates.series, pushes.series].series( done );
222
+ // cpb.start(function() {
223
+ // done();
224
+ // });
225
+
226
+ /* run all created tasks */
227
+ creates .concat (pushes ).series ( done );
225
228
}
226
229
227
230
/**
@@ -300,30 +303,28 @@ class EfficientTrackListDataLoader extends Task1 {
300
303
track ._loadingData = true ;
301
304
track .data = data ;
302
305
303
- animFrame (function () {
304
- var steps = new Array ();
305
- steps .push (function (nxt : VoidCb ) {
306
- pull_raw (row , data , function (? error ) {
307
- if (error != null ) {
308
- nxt ( error );
309
- }
310
- else {
311
- ensure_track_data_completeness (data , function (? error ) {
312
- track ._loadingData = false ;
313
- if (error != null ) {
314
- return nxt ( error );
315
- }
316
- else {
317
- nxt ();
318
- track ._dataLoaded .call ( data );
319
- }
320
- });
321
- }
322
- });
306
+ var steps = new Array ();
307
+ steps .push (function (nxt : VoidCb ) {
308
+ pull_raw (row , data , function (? error ) {
309
+ if (error != null ) {
310
+ nxt ( error );
311
+ }
312
+ else {
313
+ ensure_track_data_completeness (data , function (? error ) {
314
+ track ._loadingData = false ;
315
+ if (error != null ) {
316
+ return nxt ( error );
317
+ }
318
+ else {
319
+ nxt ();
320
+ track ._dataLoaded .call ( data );
321
+ }
322
+ });
323
+ }
323
324
});
324
- steps .push (data .initialize .bind (db , _ ));
325
- VoidAsyncs .series (steps , next );
326
325
});
326
+ steps .push (data .initialize .bind (db , _ ));
327
+ steps .series ( next );
327
328
}
328
329
329
330
/**
@@ -376,8 +377,10 @@ class EfficientTrackListDataLoader extends Task1 {
376
377
if (data .source .match (Create (_ ))) {
377
378
return Complete ;
378
379
}
379
- var decl = TrackData .getMediaDataSourceDeclFromPropertyList ( properties );
380
- return decl ;
380
+ else {
381
+ var decl = TrackData .getMediaDataSourceDeclFromPropertyList ( properties );
382
+ return decl ;
383
+ }
381
384
}
382
385
383
386
/**
@@ -401,7 +404,8 @@ class EfficientTrackListDataLoader extends Task1 {
401
404
private function autofill_data (data : TrackData , done : VoidCb ): Void {
402
405
// TODO fix auto-filler so that skipping it isn't beneficial
403
406
// FIXME skip this step entirely
404
- return defer (done .void ());
407
+ return done ();
408
+
405
409
var autoFiller = new TrackDataAutoFill (data .track , data );
406
410
autoFiller .giveCache ( cache );
407
411
autoFiller .run (function (? error ) {
@@ -418,9 +422,6 @@ class EfficientTrackListDataLoader extends Task1 {
418
422
* queue up the saving of the given TrackData
419
423
*/
420
424
private function schedule_data_write (data : TrackData ): Void {
421
- // writes.task(@async {
422
- // data.save(next, db);
423
- // });
424
425
writes .push (data .save .bind (_ , db ));
425
426
}
426
427
0 commit comments