Commit 5a182d17 authored by nano's avatar nano

use Queue

parent f5212323
......@@ -5,7 +5,8 @@
</component>
<component name="ChangeListManager">
<list default="true" id="f0cbce64-0ebc-4f60-8c2d-2fe9e214a8c0" name="Default" comment="">
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/package/main.ts" afterPath="$PROJECT_DIR$/package/main.ts" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/serives/Queue.ts" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/routes/upload.ts" afterPath="$PROJECT_DIR$/src/routes/upload.ts" />
</list>
<ignored path="mycard-console-backend.iws" />
......@@ -33,7 +34,7 @@
<entry file="file://$PROJECT_DIR$/migrate.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="353">
<caret line="128" column="22" lean-forward="true" selection-start-line="128" selection-start-column="22" selection-end-line="128" selection-end-column="22" />
<caret line="128" column="22" lean-forward="false" selection-start-line="128" selection-start-column="22" selection-end-line="128" selection-end-column="22" />
<folding>
<element signature="e#0#26#0" expanded="true" />
</folding>
......@@ -45,7 +46,7 @@
<entry file="file://$PROJECT_DIR$/server.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-320">
<caret line="31" column="7" lean-forward="true" selection-start-line="31" selection-start-column="7" selection-end-line="31" selection-end-column="7" />
<caret line="31" column="7" lean-forward="false" selection-start-line="31" selection-start-column="7" selection-end-line="31" selection-end-column="7" />
<folding />
</state>
</provider>
......@@ -66,8 +67,8 @@
<file leaf-file-name="upload.ts" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/routes/upload.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="342">
<caret line="19" column="0" lean-forward="true" selection-start-line="19" selection-start-column="0" selection-end-line="19" selection-end-column="0" />
<state relative-caret-position="151">
<caret line="155" column="43" lean-forward="true" selection-start-line="155" selection-start-column="43" selection-end-line="155" selection-end-column="43" />
<folding>
<element signature="e#0#28#0" expanded="true" />
</folding>
......@@ -75,6 +76,16 @@
</provider>
</entry>
</file>
<file leaf-file-name="Queue.ts" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/serives/Queue.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-51">
<caret line="11" column="3" lean-forward="true" selection-start-line="11" selection-start-column="3" selection-end-line="11" selection-end-column="3" />
<folding />
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="FileTemplateManagerImpl">
......@@ -88,7 +99,6 @@
</component>
<component name="FindInProjectRecents">
<findStrings>
<find>author</find>
<find>paent</find>
<find>parent</find>
<find>tags</find>
......@@ -118,6 +128,7 @@
<find>console.log</find>
<find>fs</find>
<find>fs.</find>
<find>close</find>
</findStrings>
</component>
<component name="Git.Settings">
......@@ -163,6 +174,7 @@
<option value="$PROJECT_DIR$/migrate.ts" />
<option value="$PROJECT_DIR$/package/main.ts" />
<option value="$PROJECT_DIR$/src/utils.ts" />
<option value="$PROJECT_DIR$/src/serives/download.ts" />
<option value="$PROJECT_DIR$/src/routes/upload.ts" />
</list>
</option>
......@@ -234,6 +246,24 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="moecube-console" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="moecube-console" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="serives" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="moecube-console" />
......@@ -441,12 +471,12 @@
<workItem from="1493198225466" duration="47067000" />
<workItem from="1493371982129" duration="6000" />
<workItem from="1493372010655" duration="3472000" />
<workItem from="1493692283332" duration="12870000" />
<workItem from="1493692283332" duration="14470000" />
</task>
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="214641000" />
<option name="totallyTimeSpent" value="216241000" />
</component>
<component name="TodoView">
<todo-panel id="selected-file">
......@@ -459,6 +489,7 @@
</component>
<component name="ToolWindowManager">
<frame x="55" y="23" width="1377" height="872" extended-state="0" />
<editor active="true" />
<layout>
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="DB Browser" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
......@@ -466,7 +497,7 @@
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.43941605" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32975295" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.31794873" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.31794873" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="TypeScript" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32820514" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.14011799" sideWeight="0.49384886" order="0" side_tool="false" content_ui="combo" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32846716" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
......@@ -552,13 +583,6 @@
<watches-manager />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/node_modules/@types/koa/index.d.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-5396">
<caret line="337" column="12" lean-forward="false" selection-start-line="337" selection-start-column="12" selection-end-line="337" selection-end-column="12" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/node_modules/iridium/dist/lib/Decorators.d.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="192">
......@@ -823,7 +847,7 @@
<entry file="file://$PROJECT_DIR$/server.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-320">
<caret line="31" column="7" lean-forward="true" selection-start-line="31" selection-start-column="7" selection-end-line="31" selection-end-column="7" />
<caret line="31" column="7" lean-forward="false" selection-start-line="31" selection-start-column="7" selection-end-line="31" selection-end-column="7" />
<folding />
</state>
</provider>
......@@ -841,7 +865,7 @@
<entry file="file://$PROJECT_DIR$/migrate.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="353">
<caret line="128" column="22" lean-forward="true" selection-start-line="128" selection-start-column="22" selection-end-line="128" selection-end-column="22" />
<caret line="128" column="22" lean-forward="false" selection-start-line="128" selection-start-column="22" selection-end-line="128" selection-end-column="22" />
<folding>
<element signature="e#0#26#0" expanded="true" />
</folding>
......@@ -872,10 +896,18 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/serives/Queue.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-51">
<caret line="11" column="3" lean-forward="true" selection-start-line="11" selection-start-column="3" selection-end-line="11" selection-end-column="3" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/routes/upload.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="342">
<caret line="19" column="0" lean-forward="true" selection-start-line="19" selection-start-column="0" selection-end-line="19" selection-end-column="0" />
<state relative-caret-position="151">
<caret line="155" column="43" lean-forward="true" selection-start-line="155" selection-start-column="43" selection-end-line="155" selection-end-column="43" />
<folding>
<element signature="e#0#28#0" expanded="true" />
</folding>
......
......@@ -12,13 +12,13 @@ import {mongodb} from '../models/Iridium';
import {toObjectID} from 'iridium';
import config from '../../config';
import {UploadOSS} from '../utils';
import Queue from '../serives/Queue';
import Router = require('koa-router');
const downloader = new Aria2;
let DownloadQueue = new Queue;
downloader.open();
const checkFilePath = async (file) => {
if (['.gz', '.rar', '.zip', '.7z'].indexOf(path.extname(file.path)) === -1) {
console.log(file);
......@@ -153,12 +153,12 @@ const uploadPackageUrl = async (ctx: Context) => {
}
// testUrl: https://r.my-card.in/release/dist/0c16a3ecb115fd7cf575ccdd64f62a8f3edc635b087950e4ed4f3f781972bbfd.tar.gz
DownloadQueue.run(async (ctx, _next) => {
let pack = await mongodb.Packages.findOne({_id: toObjectID(ctx.request.body._id)});
if (!pack) {
return ctx.throw(400, 'pack not exists');
}
downloader.onDownloadStart = async () => {
pack!.status = 'uploading';
await pack!.save();
......@@ -185,20 +185,21 @@ const uploadPackageUrl = async (ctx: Context) => {
// 上传完,干掉本地目录
await fs.removeAsync(bundled.distPath);
_next();
} catch (e) {
console.trace(e);
pack!.status = 'failed';
_next();
await pack!.save();
}
await downloader.close()
};
downloader.onDownloadError = async (err) => {
// console.log(await downloader.send('tellStatus', err.gid))
pack!.status = 'failed';
await pack!.save();
await downloader.close()
console.log(err);
_next();
};
......@@ -214,7 +215,7 @@ const uploadPackageUrl = async (ctx: Context) => {
downloader.send('addUri', [ctx.request.body.url], {dir: config.upload_path});
});
});
};
router.post('/v1/upload/image', UploadImage);
......
export default class Queue {
running: number;
queue: Function[];
concurrency: number;
constructor() {
this.concurrency = 1;
this.running = 0;
this.queue = [];
}
set(args) {
return Object.assign(this, args);
}
run(task) {
this.queue.push(task);
this.next();
return this;
}
next() {
while (this.running < this.concurrency && this.queue.length) {
let task = this.queue.shift();
if (task) {
task(this, () => {
this.running--;
this.next();
});
this.running++;
}
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment