Rewrote frontend download download function to make use of forked processes. This means that the download runs in full async (essentially in a separate thread). Updated the discord wrapper to be more dynamic. Updated auth manager to use async/await.

This commit is contained in:
Daniel Scalzi
2018-01-18 23:45:50 -05:00
parent 1d10b0209a
commit d4d7be7c47
5 changed files with 249 additions and 112 deletions

View File

@@ -498,7 +498,6 @@ class AssetGuard extends EventEmitter {
*/
startAsyncProcess(identifier, limit = 5){
const self = this
let win = remote.getCurrentWindow()
let acc = 0
const concurrentDlTracker = this[identifier]
const concurrentDlQueue = concurrentDlTracker.dlqueue.slice(0)
@@ -526,7 +525,6 @@ class AssetGuard extends EventEmitter {
req.abort()
console.log('Failed to download ' + asset.from + '. Response code', resp.statusCode)
self.progress += asset.size*1
win.setProgressBar(self.progress/self.totaldlsize)
self.emit('totaldlprogress', {acc: self.progress, total: self.totaldlsize})
cb()
}
@@ -536,8 +534,6 @@ class AssetGuard extends EventEmitter {
self.progress += chunk.length
acc += chunk.length
self.emit(identifier + 'dlprogress', acc)
//console.log(identifier + ' Progress', acc/this[identifier].dlsize)
win.setProgressBar(self.progress/self.totaldlsize)
self.emit('totaldlprogress', {acc: self.progress, total: self.totaldlsize})
})
}, function(err){
@@ -552,7 +548,6 @@ class AssetGuard extends EventEmitter {
self.progress -= self[identifier].dlsize
self[identifier] = new DLTracker([], 0)
if(self.totaldlsize === 0) {
win.setProgressBar(-1)
self.emit('dlcomplete')
}
})
@@ -811,6 +806,10 @@ class AssetGuard extends EventEmitter {
}*/
const serv = AssetGuard.getServerById(self.basePath, serverpackid)
if(serv == null) {
console.error('Invalid server pack id:', serverpackid)
}
self.forge = self._parseDistroModules(serv.modules, serv.mc_version)
//Correct our workaround here.
let decompressqueue = self.forge.callback
@@ -944,7 +943,6 @@ class AssetGuard extends EventEmitter {
*/
processDlQueues(identifiers = [{id:'assets', limit:20}, {id:'libraries', limit:5}, {id:'files', limit:5}, {id:'forge', limit:5}]){
this.progress = 0;
let win = remote.getCurrentWindow()
let shouldFire = true