diff options
author | Jesús <heckyel@hyperbola.info> | 2020-03-15 12:43:31 -0500 |
---|---|---|
committer | Jesús <heckyel@hyperbola.info> | 2020-03-15 12:43:31 -0500 |
commit | c41ccf38442a7f55139e38bd4ac6f5660fbcc3ed (patch) | |
tree | 1fd0f30f4150da984e2fb54f2cb2e11d2dd132b6 | |
parent | b6ca9b78e0c11fb5f30e7dfd6cbb0edda2032067 (diff) | |
download | ematrix-c41ccf38442a7f55139e38bd4ac6f5660fbcc3ed.tar.lz ematrix-c41ccf38442a7f55139e38bd4ac6f5660fbcc3ed.tar.xz ematrix-c41ccf38442a7f55139e38bd4ac6f5660fbcc3ed.zip |
Increase the number of available pending requests
-rw-r--r-- | lib/PendingRequests.jsm | 116 |
1 files changed, 58 insertions, 58 deletions
diff --git a/lib/PendingRequests.jsm b/lib/PendingRequests.jsm index fdfab1e..ad0f1b0 100644 --- a/lib/PendingRequests.jsm +++ b/lib/PendingRequests.jsm @@ -31,67 +31,67 @@ function PendingRequest() { this._key = ''; } +var bufferLength = 1024 var urlToIndex = new Map(); var writePointer = 0; -var ringBuffer = new Array(256); - -var PendingRequestBuffer = (function () { - for (let i=ringBuffer.length-1; i>=0; --i) { - ringBuffer[i] = new PendingRequest(); - } - - return { - createRequest: function (url) { - // URL to ring buffer index map: - // { k = URL, s = ring buffer indices } - // - // s is a string which character codes map to ring buffer - // indices -- for when the same URL is received multiple times - // by shouldLoadListener() before the existing one is serviced - // by the network request observer. I believe the use of a - // string in lieu of an array reduces memory churning. - let bucket; - let i = writePointer; - writePointer = i + 1 & 255; - - let req = ringBuffer[i]; - let str = String.fromCharCode(i); - - if (req._key !== '') { - bucket = urlToIndex.get(req._key); - if (bucket.lenght === 1) { - urlToIndex.delete(req._key); - } else { - let pos = bucket.indexOf(str); - urlToIndex.set(req._key, - bucket.slice(0, pos)+bucket.slice(pos+1)); - } - } +var ringBuffer = new Array(bufferLength); - bucket = urlToIndex.get(url); - urlToIndex.set(url, - (bucket === undefined) ? str : bucket + str); - req._key = url; - - return req; - }, - lookupRequest: function (url) { - let bucket = urlToIndex.get(url); - if (bucket === undefined) { - return null; - } +for (let i=0; i<bufferLength; ++i) { + ringBuffer[i] = new PendingRequest(); +} - let i = bucket.charCodeAt(0); - if (bucket.length === 1) { - urlToIndex.delete(url); +var PendingRequestBuffer = { + createRequest: function (url) { + // URL to ring buffer index map: + // { k = URL, s = ring buffer indices } + // + // s is a string which character codes map to ring buffer + // indices -- for when the same URL is received multiple times + // by shouldLoadListener() before the existing one is serviced + // by the network request observer. I believe the use of a + // string in lieu of an array reduces memory churning. + let bucket; + let i = writePointer; + writePointer = (i + 1) % bufferLength; + + let req = ringBuffer[i]; + let str = String.fromCharCode(i); + + if (req._key !== '') { + bucket = urlToIndex.get(req._key); + if (bucket.lenght === 1) { + urlToIndex.delete(req._key); } else { - urlToIndex.set(url, bucket.slice(1)); + let pos = bucket.indexOf(str); + urlToIndex.set(req._key, + bucket.slice(0, pos)+bucket.slice(pos+1)); } - - let req = ringBuffer[i]; - req._key = ''; - - return req; - }, - } -})(); + } + + bucket = urlToIndex.get(url); + urlToIndex.set(url, + (bucket === undefined) ? str : bucket + str); + req._key = url; + + return req; + }, + lookupRequest: function (url) { + let bucket = urlToIndex.get(url); + if (bucket === undefined) { + return null; + } + + let i = bucket.charCodeAt(0); + if (bucket.length === 1) { + urlToIndex.delete(url); + } else { + urlToIndex.set(url, bucket.slice(1)); + } + + let req = ringBuffer[i]; + req._key = ''; + + return req; + }, +} +}; |