@nxtedition/shared 2.0.9 → 2.0.10

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/index.js +19 -17
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -38,6 +38,8 @@ async function* _reader({ sharedState, sharedBuffer }, cb) {
38
38
  const len = buffer.readInt32LE(readPos)
39
39
  readPos += 4
40
40
 
41
+ assert(len > 0, `len: ${len} > 0`)
42
+
41
43
  const raw = buffer.subarray(readPos, readPos + len)
42
44
  readPos += len
43
45
 
@@ -70,8 +72,6 @@ export function writer({ sharedState, sharedBuffer }) {
70
72
  let writePos = 0
71
73
 
72
74
  function _tryWrite(maxLen, fn, opaque) {
73
- maxLen += 4
74
-
75
75
  assert(maxLen <= size)
76
76
 
77
77
  readPos = Atomics.load(state, READ_INDEX)
@@ -94,13 +94,15 @@ export function writer({ sharedState, sharedBuffer }) {
94
94
  buffer.writeInt32LE(-2, writePos)
95
95
  writePos += 4
96
96
 
97
+ buffer.writeInt32LE(-3, writePos)
97
98
  const len = fn(buffer.subarray(writePos + 4, writePos + 4 + maxLen), opaque)
98
- assert(len <= maxLen - 4, `len: ${len} <= maxLen: ${maxLen - 4}`)
99
+ assert(len > 0, `len: ${len} > 0`)
100
+ assert(len <= maxLen, `len: ${len} <= maxLen: ${maxLen}`)
99
101
  assert(len <= size, `len: ${len} <= size: ${size}`)
100
102
 
101
103
  buffer.writeInt32LE(len, writePos)
102
104
  writePos += 4 + len
103
- buffer.writeInt32LE(-3, writePos)
105
+ buffer.writeInt32LE(-4, writePos)
104
106
 
105
107
  Atomics.store(state, WRITE_INDEX, writePos)
106
108
  Atomics.notify(state, WRITE_INDEX)
@@ -108,19 +110,19 @@ export function writer({ sharedState, sharedBuffer }) {
108
110
  return true
109
111
  }
110
112
 
111
- async function _write(maxLen, fn, opaque) {
112
- assert(maxLen <= size)
113
+ // async function _write(maxLen, fn, opaque) {
114
+ // assert(maxLen <= size)
113
115
 
114
- const buf = Buffer.allocUnsafe(maxLen)
115
- const len = fn(buf, opaque)
116
+ // const buf = Buffer.allocUnsafe(maxLen)
117
+ // const len = fn(buf, opaque)
116
118
 
117
- while (!_tryWrite(len, (dst, buf) => buf.copy(dst, 0, 0, len))) {
118
- const { async, value } = Atomics.waitAsync(state, READ_INDEX, readPos)
119
- if (async) {
120
- await value
121
- }
122
- }
123
- }
119
+ // while (!_tryWrite(len, (dst, buf) => buf.copy(dst, 0, 0, len))) {
120
+ // const { async, value } = Atomics.waitAsync(state, READ_INDEX, readPos)
121
+ // if (async) {
122
+ // await value
123
+ // }
124
+ // }
125
+ // }
124
126
 
125
127
  function write(...args) {
126
128
  if (!args.length) {
@@ -158,8 +160,8 @@ export function writer({ sharedState, sharedBuffer }) {
158
160
  opaque = args
159
161
  }
160
162
 
161
- if (!_tryWrite(maxLen, fn, opaque)) {
162
- return _write(maxLen, fn, opaque)
163
+ while (!_tryWrite(maxLen, fn, opaque)) {
164
+ Atomics.wait(state, READ_INDEX, readPos)
163
165
  }
164
166
  }
165
167
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nxtedition/shared",
3
- "version": "2.0.9",
3
+ "version": "2.0.10",
4
4
  "description": "Ring Buffer for NodeJS cross Worker communication",
5
5
  "main": "index.js",
6
6
  "repository": {