@grpc/grpc-js
Advanced tools
Comparing version 1.8.10 to 1.8.11
@@ -44,2 +44,8 @@ /// <reference types="node" /> | ||
/** | ||
* The offset of message indices in the writeBuffer. For example, if | ||
* writeBufferOffset is 10, message 10 is in writeBuffer[0] and message 15 | ||
* is in writeBuffer[5]. | ||
*/ | ||
private writeBufferOffset; | ||
/** | ||
* Tracks whether a read has been started, so that we know whether to start | ||
@@ -66,3 +72,5 @@ * reads on new child calls. This only matters for the first read, because | ||
getPeer(): string; | ||
private maybefreeMessageBufferEntry; | ||
private getBufferEntry; | ||
private getNextBufferIndex; | ||
private clearSentMessages; | ||
private commitCall; | ||
@@ -69,0 +77,0 @@ private commitCallWithMostMessages; |
@@ -105,2 +105,8 @@ "use strict"; | ||
/** | ||
* The offset of message indices in the writeBuffer. For example, if | ||
* writeBufferOffset is 10, message 10 is in writeBuffer[0] and message 15 | ||
* is in writeBuffer[5]. | ||
*/ | ||
this.writeBufferOffset = 0; | ||
/** | ||
* Tracks whether a read has been started, so that we know whether to start | ||
@@ -142,10 +148,4 @@ * reads on new child calls. This only matters for the first read, because | ||
this.bufferTracker.freeAll(this.callNumber); | ||
for (let i = 0; i < this.writeBuffer.length; i++) { | ||
if (this.writeBuffer[i].entryType === 'MESSAGE') { | ||
this.writeBuffer[i] = { | ||
entryType: 'FREED', | ||
allocated: false | ||
}; | ||
} | ||
} | ||
this.writeBufferOffset = this.writeBufferOffset + this.writeBuffer.length; | ||
this.writeBuffer = []; | ||
process.nextTick(() => { | ||
@@ -176,16 +176,22 @@ var _a; | ||
} | ||
maybefreeMessageBufferEntry(messageIndex) { | ||
getBufferEntry(messageIndex) { | ||
var _a; | ||
return (_a = this.writeBuffer[messageIndex - this.writeBufferOffset]) !== null && _a !== void 0 ? _a : { entryType: 'FREED', allocated: false }; | ||
} | ||
getNextBufferIndex() { | ||
return this.writeBufferOffset + this.writeBuffer.length; | ||
} | ||
clearSentMessages() { | ||
if (this.state !== 'COMMITTED') { | ||
return; | ||
} | ||
const bufferEntry = this.writeBuffer[messageIndex]; | ||
if (bufferEntry.entryType === 'MESSAGE') { | ||
const earliestNeededMessageIndex = this.underlyingCalls[this.committedCallIndex].nextMessageToSend; | ||
for (let messageIndex = this.writeBufferOffset; messageIndex < earliestNeededMessageIndex; messageIndex++) { | ||
const bufferEntry = this.getBufferEntry(messageIndex); | ||
if (bufferEntry.allocated) { | ||
this.bufferTracker.free(bufferEntry.message.message.length, this.callNumber); | ||
} | ||
this.writeBuffer[messageIndex] = { | ||
entryType: 'FREED', | ||
allocated: false | ||
}; | ||
} | ||
this.writeBuffer = this.writeBuffer.slice(earliestNeededMessageIndex - this.writeBufferOffset); | ||
this.writeBufferOffset = earliestNeededMessageIndex; | ||
} | ||
@@ -212,5 +218,3 @@ commitCall(index) { | ||
} | ||
for (let messageIndex = 0; messageIndex < this.underlyingCalls[index].nextMessageToSend - 1; messageIndex += 1) { | ||
this.maybefreeMessageBufferEntry(messageIndex); | ||
} | ||
this.clearSentMessages(); | ||
} | ||
@@ -499,4 +503,4 @@ commitCallWithMostMessages() { | ||
const messageIndex = childCall.nextMessageToSend; | ||
(_b = (_a = this.writeBuffer[messageIndex]).callback) === null || _b === void 0 ? void 0 : _b.call(_a); | ||
this.maybefreeMessageBufferEntry(messageIndex); | ||
(_b = (_a = this.getBufferEntry(messageIndex)).callback) === null || _b === void 0 ? void 0 : _b.call(_a); | ||
this.clearSentMessages(); | ||
childCall.nextMessageToSend += 1; | ||
@@ -510,4 +514,4 @@ this.sendNextChildMessage(childIndex); | ||
} | ||
if (this.writeBuffer[childCall.nextMessageToSend]) { | ||
const bufferEntry = this.writeBuffer[childCall.nextMessageToSend]; | ||
if (this.getBufferEntry(childCall.nextMessageToSend)) { | ||
const bufferEntry = this.getBufferEntry(childCall.nextMessageToSend); | ||
switch (bufferEntry.entryType) { | ||
@@ -539,3 +543,3 @@ case 'MESSAGE': | ||
}; | ||
const messageIndex = this.writeBuffer.length; | ||
const messageIndex = this.getNextBufferIndex(); | ||
const bufferEntry = { | ||
@@ -546,3 +550,3 @@ entryType: 'MESSAGE', | ||
}; | ||
this.writeBuffer[messageIndex] = bufferEntry; | ||
this.writeBuffer.push(bufferEntry); | ||
if (bufferEntry.allocated) { | ||
@@ -590,7 +594,7 @@ (_a = context.callback) === null || _a === void 0 ? void 0 : _a.call(context); | ||
this.trace('halfClose called'); | ||
const halfCloseIndex = this.writeBuffer.length; | ||
this.writeBuffer[halfCloseIndex] = { | ||
const halfCloseIndex = this.getNextBufferIndex(); | ||
this.writeBuffer.push({ | ||
entryType: 'HALF_CLOSE', | ||
allocated: false | ||
}; | ||
}); | ||
for (const call of this.underlyingCalls) { | ||
@@ -597,0 +601,0 @@ if ((call === null || call === void 0 ? void 0 : call.state) === 'ACTIVE' && call.nextMessageToSend === halfCloseIndex) { |
{ | ||
"name": "@grpc/grpc-js", | ||
"version": "1.8.10", | ||
"version": "1.8.11", | ||
"description": "gRPC Library for Node - pure JS implementation", | ||
@@ -5,0 +5,0 @@ "homepage": "https://grpc.io/", |
@@ -155,2 +155,8 @@ /* | ||
/** | ||
* The offset of message indices in the writeBuffer. For example, if | ||
* writeBufferOffset is 10, message 10 is in writeBuffer[0] and message 15 | ||
* is in writeBuffer[5]. | ||
*/ | ||
private writeBufferOffset = 0; | ||
/** | ||
* Tracks whether a read has been started, so that we know whether to start | ||
@@ -207,10 +213,4 @@ * reads on new child calls. This only matters for the first read, because | ||
this.bufferTracker.freeAll(this.callNumber); | ||
for (let i = 0; i < this.writeBuffer.length; i++) { | ||
if (this.writeBuffer[i].entryType === 'MESSAGE') { | ||
this.writeBuffer[i] = { | ||
entryType: 'FREED', | ||
allocated: false | ||
}; | ||
} | ||
} | ||
this.writeBufferOffset = this.writeBufferOffset + this.writeBuffer.length; | ||
this.writeBuffer = []; | ||
process.nextTick(() => { | ||
@@ -241,16 +241,23 @@ // Explicitly construct status object to remove progress field | ||
private maybefreeMessageBufferEntry(messageIndex: number) { | ||
private getBufferEntry(messageIndex: number): WriteBufferEntry { | ||
return this.writeBuffer[messageIndex - this.writeBufferOffset] ?? {entryType: 'FREED', allocated: false}; | ||
} | ||
private getNextBufferIndex() { | ||
return this.writeBufferOffset + this.writeBuffer.length; | ||
} | ||
private clearSentMessages() { | ||
if (this.state !== 'COMMITTED') { | ||
return; | ||
} | ||
const bufferEntry = this.writeBuffer[messageIndex]; | ||
if (bufferEntry.entryType === 'MESSAGE') { | ||
const earliestNeededMessageIndex = this.underlyingCalls[this.committedCallIndex!].nextMessageToSend; | ||
for (let messageIndex = this.writeBufferOffset; messageIndex < earliestNeededMessageIndex; messageIndex++) { | ||
const bufferEntry = this.getBufferEntry(messageIndex); | ||
if (bufferEntry.allocated) { | ||
this.bufferTracker.free(bufferEntry.message!.message.length, this.callNumber); | ||
} | ||
this.writeBuffer[messageIndex] = { | ||
entryType: 'FREED', | ||
allocated: false | ||
}; | ||
} | ||
this.writeBuffer = this.writeBuffer.slice(earliestNeededMessageIndex - this.writeBufferOffset); | ||
this.writeBufferOffset = earliestNeededMessageIndex; | ||
} | ||
@@ -278,5 +285,3 @@ | ||
} | ||
for (let messageIndex = 0; messageIndex < this.underlyingCalls[index].nextMessageToSend - 1; messageIndex += 1) { | ||
this.maybefreeMessageBufferEntry(messageIndex); | ||
} | ||
this.clearSentMessages(); | ||
} | ||
@@ -562,4 +567,4 @@ | ||
const messageIndex = childCall.nextMessageToSend; | ||
this.writeBuffer[messageIndex].callback?.(); | ||
this.maybefreeMessageBufferEntry(messageIndex); | ||
this.getBufferEntry(messageIndex).callback?.(); | ||
this.clearSentMessages(); | ||
childCall.nextMessageToSend += 1; | ||
@@ -574,6 +579,6 @@ this.sendNextChildMessage(childIndex); | ||
} | ||
if (this.writeBuffer[childCall.nextMessageToSend]) { | ||
const bufferEntry = this.writeBuffer[childCall.nextMessageToSend]; | ||
if (this.getBufferEntry(childCall.nextMessageToSend)) { | ||
const bufferEntry = this.getBufferEntry(childCall.nextMessageToSend); | ||
switch (bufferEntry.entryType) { | ||
case 'MESSAGE': | ||
case 'MESSAGE': | ||
childCall.call.sendMessageWithContext({ | ||
@@ -603,3 +608,3 @@ callback: (error) => { | ||
}; | ||
const messageIndex = this.writeBuffer.length; | ||
const messageIndex = this.getNextBufferIndex(); | ||
const bufferEntry: WriteBufferEntry = { | ||
@@ -610,3 +615,3 @@ entryType: 'MESSAGE', | ||
}; | ||
this.writeBuffer[messageIndex] = bufferEntry; | ||
this.writeBuffer.push(bufferEntry); | ||
if (bufferEntry.allocated) { | ||
@@ -653,7 +658,7 @@ context.callback?.(); | ||
this.trace('halfClose called'); | ||
const halfCloseIndex = this.writeBuffer.length; | ||
this.writeBuffer[halfCloseIndex] = { | ||
const halfCloseIndex = this.getNextBufferIndex(); | ||
this.writeBuffer.push({ | ||
entryType: 'HALF_CLOSE', | ||
allocated: false | ||
}; | ||
}); | ||
for (const call of this.underlyingCalls) { | ||
@@ -660,0 +665,0 @@ if (call?.state === 'ACTIVE' && call.nextMessageToSend === halfCloseIndex) { |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
1696011
33597