You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.3 KiB
44 lines
1.3 KiB
var Immutable = require("immutable"); |
|
|
|
module.exports.init = function (ui, bs) { |
|
|
|
var timeout = 0; |
|
var optPath = ["remote-debug", "latency"]; |
|
|
|
ui.setOptionIn(optPath, Immutable.Map({ |
|
name: "latency", |
|
title: "Latency", |
|
active: false, |
|
tagline: "Simulate slower connections by throttling the response time of each request.", |
|
rate: 0 |
|
})); |
|
|
|
var methods = { |
|
toggle: function (value) { |
|
if (value !== true) { |
|
value = false; |
|
} |
|
if (value) { |
|
ui.setOptionIn(optPath.concat("active"), true); |
|
bs.addMiddleware("*", function (req, res, next) { |
|
setTimeout(next, timeout); |
|
}, {id: "cp-latency", override: true}); |
|
} else { |
|
ui.setOptionIn(optPath.concat("active"), false); |
|
bs.removeMiddleware("cp-latency"); |
|
} |
|
}, |
|
adjust: function (data) { |
|
timeout = parseFloat(data.rate) * 1000; |
|
var saved = ui.options.getIn(optPath.concat("rate")); |
|
if (saved !== data.rate) { |
|
ui.setOptionIn(optPath.concat("rate"), timeout/1000); |
|
} |
|
}, |
|
event: function (event) { |
|
methods[event.event](event.data); |
|
} |
|
}; |
|
|
|
return methods; |
|
}; |