Change the internal stream
property, as sent when Streams are used, from a String to a Number
Given that the `stream` property is an internal implementation detail, changing its type shouldn't be a problem. By using Numbers instead, we can avoid unnecessary String allocations when creating/processing Streams.
This commit is contained in:
parent
252a3e35fb
commit
4e6a9b54c7
@ -18,6 +18,18 @@ import {
|
|||||||
ReadableStream, UnexpectedResponseException, UnknownErrorException
|
ReadableStream, UnexpectedResponseException, UnknownErrorException
|
||||||
} from './util';
|
} from './util';
|
||||||
|
|
||||||
|
const StreamKind = {
|
||||||
|
UNKNOWN: 0,
|
||||||
|
CANCEL: 1,
|
||||||
|
CANCEL_COMPLETE: 2,
|
||||||
|
CLOSE: 3,
|
||||||
|
ENQUEUE: 4,
|
||||||
|
ERROR: 5,
|
||||||
|
PULL: 6,
|
||||||
|
PULL_COMPLETE: 7,
|
||||||
|
START_COMPLETE: 8,
|
||||||
|
};
|
||||||
|
|
||||||
async function resolveCall(fn, args, thisArg = null) {
|
async function resolveCall(fn, args, thisArg = null) {
|
||||||
if (!fn) {
|
if (!fn) {
|
||||||
return undefined;
|
return undefined;
|
||||||
@ -217,7 +229,7 @@ MessageHandler.prototype = {
|
|||||||
comObj.postMessage({
|
comObj.postMessage({
|
||||||
sourceName,
|
sourceName,
|
||||||
targetName,
|
targetName,
|
||||||
stream: 'pull',
|
stream: StreamKind.PULL,
|
||||||
streamId,
|
streamId,
|
||||||
desiredSize: controller.desiredSize,
|
desiredSize: controller.desiredSize,
|
||||||
});
|
});
|
||||||
@ -233,7 +245,7 @@ MessageHandler.prototype = {
|
|||||||
comObj.postMessage({
|
comObj.postMessage({
|
||||||
sourceName,
|
sourceName,
|
||||||
targetName,
|
targetName,
|
||||||
stream: 'cancel',
|
stream: StreamKind.CANCEL,
|
||||||
streamId,
|
streamId,
|
||||||
reason,
|
reason,
|
||||||
});
|
});
|
||||||
@ -270,7 +282,7 @@ MessageHandler.prototype = {
|
|||||||
self.postMessage({
|
self.postMessage({
|
||||||
sourceName,
|
sourceName,
|
||||||
targetName,
|
targetName,
|
||||||
stream: 'enqueue',
|
stream: StreamKind.ENQUEUE,
|
||||||
streamId,
|
streamId,
|
||||||
chunk,
|
chunk,
|
||||||
}, transfers);
|
}, transfers);
|
||||||
@ -284,7 +296,7 @@ MessageHandler.prototype = {
|
|||||||
comObj.postMessage({
|
comObj.postMessage({
|
||||||
sourceName,
|
sourceName,
|
||||||
targetName,
|
targetName,
|
||||||
stream: 'close',
|
stream: StreamKind.CLOSE,
|
||||||
streamId,
|
streamId,
|
||||||
});
|
});
|
||||||
delete self.streamSinks[streamId];
|
delete self.streamSinks[streamId];
|
||||||
@ -298,7 +310,7 @@ MessageHandler.prototype = {
|
|||||||
comObj.postMessage({
|
comObj.postMessage({
|
||||||
sourceName,
|
sourceName,
|
||||||
targetName,
|
targetName,
|
||||||
stream: 'error',
|
stream: StreamKind.ERROR,
|
||||||
streamId,
|
streamId,
|
||||||
reason,
|
reason,
|
||||||
});
|
});
|
||||||
@ -319,7 +331,7 @@ MessageHandler.prototype = {
|
|||||||
comObj.postMessage({
|
comObj.postMessage({
|
||||||
sourceName,
|
sourceName,
|
||||||
targetName,
|
targetName,
|
||||||
stream: 'start_complete',
|
stream: StreamKind.START_COMPLETE,
|
||||||
streamId,
|
streamId,
|
||||||
success: true,
|
success: true,
|
||||||
});
|
});
|
||||||
@ -327,7 +339,7 @@ MessageHandler.prototype = {
|
|||||||
comObj.postMessage({
|
comObj.postMessage({
|
||||||
sourceName,
|
sourceName,
|
||||||
targetName,
|
targetName,
|
||||||
stream: 'start_complete',
|
stream: StreamKind.START_COMPLETE,
|
||||||
streamId,
|
streamId,
|
||||||
reason,
|
reason,
|
||||||
});
|
});
|
||||||
@ -355,19 +367,19 @@ MessageHandler.prototype = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
switch (data.stream) {
|
switch (data.stream) {
|
||||||
case 'start_complete':
|
case StreamKind.START_COMPLETE:
|
||||||
resolveOrReject(this.streamControllers[data.streamId].startCall, data);
|
resolveOrReject(this.streamControllers[data.streamId].startCall, data);
|
||||||
break;
|
break;
|
||||||
case 'pull_complete':
|
case StreamKind.PULL_COMPLETE:
|
||||||
resolveOrReject(this.streamControllers[data.streamId].pullCall, data);
|
resolveOrReject(this.streamControllers[data.streamId].pullCall, data);
|
||||||
break;
|
break;
|
||||||
case 'pull':
|
case StreamKind.PULL:
|
||||||
// Ignore any pull after close is called.
|
// Ignore any pull after close is called.
|
||||||
if (!this.streamSinks[data.streamId]) {
|
if (!this.streamSinks[data.streamId]) {
|
||||||
comObj.postMessage({
|
comObj.postMessage({
|
||||||
sourceName,
|
sourceName,
|
||||||
targetName,
|
targetName,
|
||||||
stream: 'pull_complete',
|
stream: StreamKind.PULL_COMPLETE,
|
||||||
streamId,
|
streamId,
|
||||||
success: true,
|
success: true,
|
||||||
});
|
});
|
||||||
@ -386,7 +398,7 @@ MessageHandler.prototype = {
|
|||||||
comObj.postMessage({
|
comObj.postMessage({
|
||||||
sourceName,
|
sourceName,
|
||||||
targetName,
|
targetName,
|
||||||
stream: 'pull_complete',
|
stream: StreamKind.PULL_COMPLETE,
|
||||||
streamId,
|
streamId,
|
||||||
success: true,
|
success: true,
|
||||||
});
|
});
|
||||||
@ -394,20 +406,20 @@ MessageHandler.prototype = {
|
|||||||
comObj.postMessage({
|
comObj.postMessage({
|
||||||
sourceName,
|
sourceName,
|
||||||
targetName,
|
targetName,
|
||||||
stream: 'pull_complete',
|
stream: StreamKind.PULL_COMPLETE,
|
||||||
streamId,
|
streamId,
|
||||||
reason,
|
reason,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case 'enqueue':
|
case StreamKind.ENQUEUE:
|
||||||
assert(this.streamControllers[data.streamId],
|
assert(this.streamControllers[data.streamId],
|
||||||
'enqueue should have stream controller');
|
'enqueue should have stream controller');
|
||||||
if (!this.streamControllers[data.streamId].isClosed) {
|
if (!this.streamControllers[data.streamId].isClosed) {
|
||||||
this.streamControllers[data.streamId].controller.enqueue(data.chunk);
|
this.streamControllers[data.streamId].controller.enqueue(data.chunk);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'close':
|
case StreamKind.CLOSE:
|
||||||
assert(this.streamControllers[data.streamId],
|
assert(this.streamControllers[data.streamId],
|
||||||
'close should have stream controller');
|
'close should have stream controller');
|
||||||
if (this.streamControllers[data.streamId].isClosed) {
|
if (this.streamControllers[data.streamId].isClosed) {
|
||||||
@ -417,18 +429,18 @@ MessageHandler.prototype = {
|
|||||||
this.streamControllers[data.streamId].controller.close();
|
this.streamControllers[data.streamId].controller.close();
|
||||||
deleteStreamController();
|
deleteStreamController();
|
||||||
break;
|
break;
|
||||||
case 'error':
|
case StreamKind.ERROR:
|
||||||
assert(this.streamControllers[data.streamId],
|
assert(this.streamControllers[data.streamId],
|
||||||
'error should have stream controller');
|
'error should have stream controller');
|
||||||
this.streamControllers[data.streamId].controller.
|
this.streamControllers[data.streamId].controller.
|
||||||
error(wrapReason(data.reason));
|
error(wrapReason(data.reason));
|
||||||
deleteStreamController();
|
deleteStreamController();
|
||||||
break;
|
break;
|
||||||
case 'cancel_complete':
|
case StreamKind.CANCEL_COMPLETE:
|
||||||
resolveOrReject(this.streamControllers[data.streamId].cancelCall, data);
|
resolveOrReject(this.streamControllers[data.streamId].cancelCall, data);
|
||||||
deleteStreamController();
|
deleteStreamController();
|
||||||
break;
|
break;
|
||||||
case 'cancel':
|
case StreamKind.CANCEL:
|
||||||
if (!this.streamSinks[data.streamId]) {
|
if (!this.streamSinks[data.streamId]) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -437,7 +449,7 @@ MessageHandler.prototype = {
|
|||||||
comObj.postMessage({
|
comObj.postMessage({
|
||||||
sourceName,
|
sourceName,
|
||||||
targetName,
|
targetName,
|
||||||
stream: 'cancel_complete',
|
stream: StreamKind.CANCEL_COMPLETE,
|
||||||
streamId,
|
streamId,
|
||||||
success: true,
|
success: true,
|
||||||
});
|
});
|
||||||
@ -445,7 +457,7 @@ MessageHandler.prototype = {
|
|||||||
comObj.postMessage({
|
comObj.postMessage({
|
||||||
sourceName,
|
sourceName,
|
||||||
targetName,
|
targetName,
|
||||||
stream: 'cancel_complete',
|
stream: StreamKind.CANCEL_COMPLETE,
|
||||||
streamId,
|
streamId,
|
||||||
reason,
|
reason,
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user