Commit 9286e781 authored by 神楽坂玲奈's avatar 神楽坂玲奈

what

parent dda8dbff
Pipeline #1793 failed with stages
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
assert = require 'assert'
module.exports = class Quality
constructor: (@delay=0, @jitter=0, @reliability=1, @cost=0)->
@unreachable: new Quality(0,0,0,0)
concat: (delay, jitter, reliability, cost)->
if delay instanceof Quality
@concat(delay.delay, delay.jitter, delay.reliability, delay.cost)
else
@delay += delay
@jitter += jitter
@reliability *= reliability
@cost += cost
this
# 若 reliability = 0,metric 应为 +∞
# 对于两条路线,同时连接任何一个相同的(reliability > 0的)线路,大小关系不变
metric: ()->
assert(@jitter >= 0)
assert(0 <= @reliability <= 1)
assert(@cost >= 0)
if @reliability == 0
Number.POSITIVE_INFINITY
else
@delay + (1 - @reliability) * 6 + @cost * 0.1
// Generated by CoffeeScript 1.9.3
(function() {
var Quality, assert;
assert = require('assert');
module.exports = Quality = (function() {
function Quality(delay1, jitter1, reliability1, cost1) {
this.delay = delay1 != null ? delay1 : 0;
this.jitter = jitter1 != null ? jitter1 : 0;
this.reliability = reliability1 != null ? reliability1 : 1;
this.cost = cost1 != null ? cost1 : 0;
}
Quality.unreachable = new Quality(0, 0, 0, 0);
Quality.prototype.concat = function(delay, jitter, reliability, cost) {
if (delay instanceof Quality) {
this.concat(delay.delay, delay.jitter, delay.reliability, delay.cost);
} else {
this.delay += delay;
this.jitter += jitter;
this.reliability *= reliability;
this.cost += cost;
}
return this;
};
Quality.prototype.metric = function() {
var ref;
assert(this.jitter >= 0);
assert((0 <= (ref = this.reliability) && ref <= 1));
assert(this.cost >= 0);
if (this.reliability === 0) {
return Number.POSITIVE_INFINITY;
} else {
return this.delay + (1 - this.reliability) * 6 + this.cost * 0.1;
}
};
return Quality;
})();
}).call(this);
//# sourceMappingURL=quality.js.map
{
"version": 3,
"file": "quality.js",
"sourceRoot": "",
"sources": [
"quality.coffee"
],
"names": [],
"mappings": ";AAAA;AAAA,MAAA;;EAAA,MAAA,GAAS,OAAA,CAAQ,QAAR;;EAET,MAAM,CAAC,OAAP,GAAuB;IACR,iBAAC,MAAD,EAAW,OAAX,EAAsB,YAAtB,EAAsC,KAAtC;MAAC,IAAC,CAAA,yBAAD,SAAO;MAAG,IAAC,CAAA,2BAAD,UAAQ;MAAG,IAAC,CAAA,qCAAD,eAAa;MAAG,IAAC,CAAA,uBAAD,QAAM;IAA5C;;IAEb,OAAC,CAAA,WAAD,GAAkB,IAAA,OAAA,CAAQ,CAAR,EAAU,CAAV,EAAY,CAAZ,EAAc,CAAd;;sBAGlB,MAAA,GAAQ,SAAC,KAAD,EAAQ,MAAR,EAAgB,WAAhB,EAA6B,IAA7B;MACN,IAAG,KAAA,YAAiB,OAApB;QACE,IAAC,CAAA,MAAD,CAAQ,KAAK,CAAC,KAAd,EAAqB,KAAK,CAAC,MAA3B,EAAmC,KAAK,CAAC,WAAzC,EAAsD,KAAK,CAAC,IAA5D,EADF;OAAA,MAAA;QAGE,IAAC,CAAA,KAAD,IAAU;QACV,IAAC,CAAA,MAAD,IAAW;QACX,IAAC,CAAA,WAAD,IAAgB;QAChB,IAAC,CAAA,IAAD,IAAS,KANX;;aAOA;IARM;;sBAYR,MAAA,GAAQ,SAAA;AACN,UAAA;MAAA,MAAA,CAAO,IAAC,CAAA,MAAD,IAAW,CAAlB;MACA,MAAA,CAAO,CAAA,CAAA,WAAK,IAAC,CAAA,YAAN,OAAA,IAAqB,CAArB,CAAP;MACA,MAAA,CAAO,IAAC,CAAA,IAAD,IAAS,CAAhB;MACA,IAAG,IAAC,CAAA,WAAD,KAAgB,CAAnB;eACE,MAAM,CAAC,kBADT;OAAA,MAAA;eAGE,IAAC,CAAA,KAAD,GAAS,CAAC,CAAA,GAAI,IAAC,CAAA,WAAN,CAAA,GAAqB,CAA9B,GAAkC,IAAC,CAAA,IAAD,GAAQ,IAH5C;;IAJM;;;;;AApBV"
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment