From 5fd11ec9c0b34b48a226a5871b4eb21aeb5008d0 Mon Sep 17 00:00:00 2001 From: LosslessBot Date: Thu, 5 May 2016 19:21:01 +0200 Subject: [PATCH] add some more buffer logic --- ts/taskbuffer.classes.helpers.ts | 6 +++++- ts/taskbuffer.classes.task.ts | 15 +++++++++++++-- ts/taskbuffer.classes.taskchain.ts | 14 +++++++------- 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/ts/taskbuffer.classes.helpers.ts b/ts/taskbuffer.classes.helpers.ts index a747859..afc0efa 100644 --- a/ts/taskbuffer.classes.helpers.ts +++ b/ts/taskbuffer.classes.helpers.ts @@ -61,4 +61,8 @@ export let runTask = function(taskArg:Task,optionsArg?:{touchedTasksArray:Task[] }) return done.promise; -}; \ No newline at end of file +}; + +export let runBufferedTask = (taskArg:Task) => { + +} \ No newline at end of file diff --git a/ts/taskbuffer.classes.task.ts b/ts/taskbuffer.classes.task.ts index 132ce21..185942b 100644 --- a/ts/taskbuffer.classes.task.ts +++ b/ts/taskbuffer.classes.task.ts @@ -15,7 +15,7 @@ export class Task { preTask:Task; afterTask:Task; - constructor(optionsArg:{taskFunction:any,preTask?:Task,afterTask?:Task, buffered?:boolean}){ + constructor(optionsArg:{taskFunction:any,preTask?:Task,afterTask?:Task, buffered?:boolean, bufferMax?:number}){ if (!optionsArg){optionsArg = {taskFunction:function(){}}} var options = optionsArg; this.task = optionsArg.taskFunction; @@ -24,13 +24,24 @@ export class Task { this.idle = true; this.running = false; this.buffered = options.buffered; + this.bufferMax = options.bufferMax; } + trigger(){ let done = plugins.Q.defer(); - return helpers.runTask(this); + if(this.buffered) {this.triggerBuffered()} + else{this.triggerUnBuffered()}; }; + triggerUnBuffered(){ + return helpers.runTask(this); + } triggerBuffered(){ var done = plugins.Q.defer(); + if(!(this.bufferCounter >= this.bufferMax)){ + this.bufferCounter++ + } + helpers.runBufferedTask(this); + return done.promise; } get state():string { diff --git a/ts/taskbuffer.classes.taskchain.ts b/ts/taskbuffer.classes.taskchain.ts index 47a313d..9e83391 100644 --- a/ts/taskbuffer.classes.taskchain.ts +++ b/ts/taskbuffer.classes.taskchain.ts @@ -1,12 +1,12 @@ /// import * as plugins from "./taskbuffer.plugins"; -import * as classes from "./taskbuffer.classes" +import {Task} from "./taskbuffer.classes"; import helpers = require("./taskbuffer.classes.helpers"); -export class Taskchain extends classes.Task { - taskArray:classes.Task[]; +export class Taskchain extends Task { + taskArray:Task[]; - constructor(taskArrayArg:classes.Task[]|classes.Task){ + constructor(taskArrayArg:Task[]|Task){ super({ taskFunction: () => { // this is the function that gets executed when TaskChain is triggered if(this.taskArray.length = 0) return; //make sure there is actually a Task available to execute @@ -22,10 +22,10 @@ export class Taskchain extends classes.Task { } }); } - addTask(taskArg:classes.Task){ + addTask(taskArg:Task){ this.taskArray.push(taskArg); }; - removeTask(taskArg:classes.Task){ + removeTask(taskArg:Task){ //TODO }; shiftTask(){ @@ -34,7 +34,7 @@ export class Taskchain extends classes.Task { }; let myTask = new Taskchain( - new classes.Task({ + new Task({ taskFunction:function(){} }) ); \ No newline at end of file