forked from dashevo/node.js-engineer-code-challenge
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcalculateExpenses.js
More file actions
30 lines (28 loc) · 865 Bytes
/
calculateExpenses.js
File metadata and controls
30 lines (28 loc) · 865 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
const P2P_TRAFFIC_FACTOR = 0.00001;
const HOSTED_TRAFFIC_FACTOR = 0.001;
const ELAPSED_TIME_FACTOR = 0.00001;
const DASH_FACTOR = 0.001;
/**
* Calculate expenses
*
* @typedef calculateExpenses
* @param {TrafficMetricStorage} p2pTraffic
* @param {TrafficMetricStorage} hostedTraffic
* @param {number} elapsedTime
* @return number
*/
function calculateExpenses(p2pTraffic, hostedTraffic, elapsedTime) {
return ((p2pTraffic.getSummarySize() * P2P_TRAFFIC_FACTOR) +
(hostedTraffic.getSummarySize() * HOSTED_TRAFFIC_FACTOR) +
(elapsedTime * ELAPSED_TIME_FACTOR)) * DASH_FACTOR;
}
/**
* @type {calculateExpenses &
* {HOSTED_TRAFFIC_FACTOR, P2P_TRAFFIC_FACTOR, ELAPSED_TIME_FACTOR, DASH_FACTOR}}
*/
module.exports = Object.assign(calculateExpenses, {
HOSTED_TRAFFIC_FACTOR,
P2P_TRAFFIC_FACTOR,
ELAPSED_TIME_FACTOR,
DASH_FACTOR,
});