mirror of
https://github.com/servo/servo.git
synced 2025-10-09 21:10:19 +01:00
43 lines
1.5 KiB
JavaScript
43 lines
1.5 KiB
JavaScript
const STASH_RESPONDER = "wss://{{host}}:{{ports[wss][0]}}/stash_responder_blocking";
|
|
|
|
class StashUtils {
|
|
/**
|
|
* Sends a request to store (|key|, |tuple|) in Stash
|
|
* (https://web-platform-tests.org/tools/wptserve/docs/stash.html).
|
|
* @param {string} key A UUID that acts as a key that can be used to retrieve |value| later.
|
|
* @param {string} value Value to be stored in Stash.
|
|
* @returns {Promise} Promise that resolves once the server responds.
|
|
*/
|
|
static putValue(key, value) {
|
|
return new Promise(resolve => {
|
|
const ws = new WebSocket(STASH_RESPONDER);
|
|
ws.onopen = () => {
|
|
ws.send(JSON.stringify({action: 'set', key: key, value: value}));
|
|
};
|
|
ws.onmessage = e => {
|
|
ws.close();
|
|
resolve();
|
|
};
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Retrieves value associated with |key| in Stash. If no value has been
|
|
* associated with |key| yet, the method waits for putValue to be called with
|
|
* |key|, and a value to be associated, before resolving the return promise.
|
|
* @param {string} key A UUID that uniquely identifies the value to retrieve.
|
|
* @returns {Promise<string>} A promise that resolves with the value associated with |key|.
|
|
*/
|
|
static takeValue(key) {
|
|
return new Promise(resolve => {
|
|
const ws = new WebSocket(STASH_RESPONDER);
|
|
ws.onopen = () => {
|
|
ws.send(JSON.stringify({action: 'get', key: key}));
|
|
};
|
|
ws.onmessage = e => {
|
|
ws.close();
|
|
resolve(JSON.parse(e.data).value);
|
|
};
|
|
});
|
|
}
|
|
}
|