posipaki 0.5.5 → 0.6.0

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/process.ts +17 -0
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "posipaki",
4
- "version": "0.5.5",
4
+ "version": "0.6.0",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
7
7
  "scripts": {
package/src/process.ts CHANGED
@@ -43,6 +43,7 @@ class Process<Args, State, InMessage extends Message, OutMessage extends Message
43
43
  private children: Array<Process<unknown, unknown, Message, Message>>;
44
44
  private subscribers: Array<NotifyFn>;
45
45
  private exitWaiter: Waiter;
46
+ private _isPaused: boolean = false;
46
47
 
47
48
  constructor(fn: ProcessFn<Args, State, InMessage, OutMessage>, pname: string, toParent: ProcessMessageCb<OutMessage> | undefined) {
48
49
  this.pgenerator = fn;
@@ -120,9 +121,14 @@ class Process<Args, State, InMessage extends Message, OutMessage extends Message
120
121
 
121
122
  tick() {
122
123
  this.nextTick?.flush();
124
+ this.nextTick = null;
123
125
  }
124
126
 
125
127
  _scheduleTick() {
128
+ if (this._isPaused) {
129
+ return;
130
+ }
131
+
126
132
  this.nextTick?.cancel();
127
133
  this.nextTick = defer(()=> {
128
134
  this.nextTick = null;
@@ -149,6 +155,17 @@ class Process<Args, State, InMessage extends Message, OutMessage extends Message
149
155
  }
150
156
  }
151
157
 
158
+ pause() {
159
+ this.nextTick?.cancel();
160
+ this.nextTick = null;
161
+ this._isPaused = true;
162
+ }
163
+
164
+ resume() {
165
+ this._isPaused = false;
166
+ this._scheduleTick();
167
+ }
168
+
152
169
  wait() {
153
170
  return this.exitWaiter.promise;
154
171
  }