multi-tasks 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,77 @@
1
+ let fs = require('fs');
2
+ let pathutil = require('path');
3
+ let SuperConsumer = require('../index').SuperConsumer;
4
+
5
+ let loadTaskFile = (dir)=>{
6
+ var results = []
7
+ var list = fs.readdirSync(dir);
8
+ list.forEach(function(file) {
9
+ var stat;
10
+ try{
11
+ stat = fs.statSync(pathutil.resolve(dir, file))
12
+ }catch(e){
13
+ //Must try-catch, the file maybe deleted by other process
14
+ }
15
+ if (stat && !stat.isDirectory()) results.push({file, fpath: pathutil.resolve(dir, file)});
16
+ })
17
+ //console.log(results);
18
+ return results;
19
+ };
20
+ let mvTask = (oldPath, newPath, oldfname, callback)=>{
21
+ if(typeof callback === 'undefined') callback = ()=>{};
22
+ //console.log('>>>', oldPath, newPath, oldfname)
23
+ let oldfPath = pathutil.resolve(oldPath, oldfname);
24
+ let newfPath = pathutil.resolve(newPath, oldfname);
25
+ fs.rename(oldfPath, newfPath, (err) => {
26
+ if (err) throw err;
27
+ callback(newfPath);
28
+ });
29
+ };
30
+
31
+ let _do = (mainTaskInfo, actions, callback)=>{
32
+ let{dynamicTasksFolder, dynamicTasksFolderSucc, dynamicTasksFolderFail} = mainTaskInfo.defination;
33
+
34
+ let tasks = loadTaskFile(dynamicTasksFolder);
35
+
36
+ if(tasks.length === 0) return callback({data:'hahaha'+Math.random()});
37
+ let task = tasks[0];
38
+ let fpath = task.fpath;
39
+
40
+ mvTask(dynamicTasksFolder, dynamicTasksFolderSucc, task.file);
41
+
42
+ // //create tasks forever
43
+ // fs.writeFileSync(pathutil.resolve(dynamicTasksFolder, Math.random()+'.newtask'), '');
44
+
45
+ console.log('processing', fpath);
46
+
47
+
48
+ {
49
+
50
+ //processing....
51
+ }
52
+
53
+ _do(mainTaskInfo, actions, callback);
54
+ };
55
+
56
+
57
+ class TestConsumer extends SuperConsumer {
58
+
59
+ // constructor
60
+ constructor(taskname, parentfolder) {
61
+ super(taskname, parentfolder)
62
+
63
+ }
64
+ setTaskTrunkInfo(trunkInfo){
65
+ this.trunkInfo = trunkInfo;
66
+ }
67
+ run (mainTaskInfo, subTaskInfo, taskInfo, callback){
68
+ //console.log(`this.trunkInfo===`, this.trunkInfo)
69
+ let actions = subTaskInfo.actions;
70
+ mainTaskInfo.defination = this.trunkInfo;
71
+ _do(mainTaskInfo, actions, (result)=>{
72
+ callback(result)
73
+ })
74
+
75
+ }
76
+ }
77
+ module.exports = TestConsumer;
@@ -0,0 +1,30 @@
1
+ let SuperProducer = require('../index').SuperProducer;
2
+ class TestProducer extends SuperProducer {
3
+
4
+ // constructor
5
+ constructor(taskname, parentfolder) {
6
+ super(taskname, parentfolder)
7
+
8
+ }
9
+ setTaskTrunkInfo(trunkInfo){
10
+ this.trunkInfo = trunkInfo;
11
+ }
12
+ getAllActions() {
13
+
14
+ return new Promise((resolve, reject)=>{
15
+ let trunkInfo = this.trunkInfo;
16
+ let {NUMBER_OF_WORKS} = trunkInfo;
17
+ //console.log(this.trunkInfo)
18
+ //throw repos.length+'ff'+repos2.length
19
+ //here, IGNORED_repoRegexStringList
20
+ let alltasks = []
21
+ for(let i=0;i<NUMBER_OF_WORKS;i++){
22
+ alltasks.push({
23
+ num:i
24
+ })
25
+ }
26
+ resolve(alltasks);
27
+ })
28
+ }
29
+ }
30
+ module.exports = TestProducer;
@@ -0,0 +1,34 @@
1
+ let fs = require('fs');
2
+ let pathutil = require('path');
3
+ let makeDir = require('make-dir');
4
+ let RunnerProducer = require('./RunnerProducer')
5
+ let RunnerConsumer = require('./RunnerConsumer')
6
+
7
+ let thisroot = pathutil.parse(__filename).dir;
8
+ let taskId = `workers_of_${Math.random()}`;
9
+ let multi_task_parent_folder = pathutil.resolve(thisroot, `../../../multi-tasks-example2-dynamicIncreasing`);
10
+
11
+ let producer = new RunnerProducer(taskId, multi_task_parent_folder)
12
+ let consumer = new RunnerConsumer();
13
+ let master = require('../index').master;
14
+
15
+ console.log(producer.getTaskName())
16
+ //return;
17
+
18
+ let NUMBER_OF_WORKS = 6;//LOCK NUMBER OF WORKERS
19
+
20
+ let taskConfig = {
21
+ NUMBER_OF_WORKS,
22
+ dynamicTasksFolder: pathutil.resolve(multi_task_parent_folder, `./dynamicTasks`),
23
+ dynamicTasksFolderSucc: pathutil.resolve(multi_task_parent_folder, `./dynamicTasks-SUCC`),
24
+ dynamicTasksFolderFail: pathutil.resolve(multi_task_parent_folder, `./dynamicTasks-FAIL`),
25
+ }
26
+
27
+
28
+ console.log(`xxxxxxxxxxxxxxxx----`)
29
+ producer.setTaskTrunkInfo(taskConfig);
30
+ consumer.setTaskTrunkInfo(taskConfig)
31
+ master.run(producer, consumer, {
32
+ quotaOfEachTask:1, //<--Lock as one
33
+ numberOfWorks:NUMBER_OF_WORKS
34
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "multi-tasks",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "directories": {
@@ -14,6 +14,10 @@
14
14
  "worker",
15
15
  "multithread"
16
16
  ],
17
+ "dependencies": {
18
+ "moment":"2.29.4",
19
+ "make-dir":"^3.1.0"
20
+ },
17
21
  "author": "zhanglei923@gmail.com",
18
22
  "license": "MIT"
19
23
  }