aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesús <heckyel@hyperbola.info>2020-03-15 12:43:31 -0500
committerJesús <heckyel@hyperbola.info>2020-03-15 12:43:31 -0500
commitc41ccf38442a7f55139e38bd4ac6f5660fbcc3ed (patch)
tree1fd0f30f4150da984e2fb54f2cb2e11d2dd132b6
parentb6ca9b78e0c11fb5f30e7dfd6cbb0edda2032067 (diff)
downloadematrix-c41ccf38442a7f55139e38bd4ac6f5660fbcc3ed.tar.lz
ematrix-c41ccf38442a7f55139e38bd4ac6f5660fbcc3ed.tar.xz
ematrix-c41ccf38442a7f55139e38bd4ac6f5660fbcc3ed.zip
Increase the number of available pending requests
-rw-r--r--lib/PendingRequests.jsm116
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;
+ },
+}
+};