Commit 66277927bc51526a20630df6b741059f576c0fa0
1 parent
a0f2ed6a5b
Exists in
master
isPartnerHealthy
Showing 2 changed files with 31 additions and 0 deletions Side-by-side Diff
adaptor-xmpp.js
... | ... | @@ -54,6 +54,10 @@ function isPartnerOffline(partner) { |
54 | 54 | return matrixUtil.isPartnerOffline(partner); |
55 | 55 | } |
56 | 56 | |
57 | +function isPartnerHealthy(partner) { | |
58 | + return matrixUtil.isPartnerHealthy(partner); | |
59 | +} | |
60 | + | |
57 | 61 | function init(_username, _password, _logger, _callbacks) { |
58 | 62 | username = _username; |
59 | 63 | password = _password; |
matrix-util.js
... | ... | @@ -2,6 +2,7 @@ |
2 | 2 | |
3 | 3 | var moment = require('moment'); |
4 | 4 | var momentFormat = 'YYYY-MM-DD HH:mm:ss'; |
5 | +var maxHealthyWaitMs = 60 * 1000; | |
5 | 6 | |
6 | 7 | module.exports = MatrixUtil; |
7 | 8 | |
... | ... | @@ -109,6 +110,32 @@ MatrixUtil.prototype.isPartnerOffline = function(partner) { |
109 | 110 | return true; |
110 | 111 | } |
111 | 112 | |
113 | +MatrixUtil.prototype.isPartnerHealthy = function(partner) { | |
114 | + if (!partner) { return; } | |
115 | + partner = _cleanPartnerId(partner); | |
116 | + | |
117 | + if (this.isPartnerOffline(partner)) { | |
118 | + return; | |
119 | + } | |
120 | + | |
121 | + let matrix = this.matrix; | |
122 | + let logger = this.logger; | |
123 | + | |
124 | + if (!matrix) { return false; } | |
125 | + | |
126 | + if (!matrix.buddies[partner]) { return false; } | |
127 | + if (!matrix.buddies[partner]['waiting_for_response']) { return true; } | |
128 | + if (!matrix.buddies[partner]['last_outgoing']) { return true; } | |
129 | + if (!matrix.buddies[partner]['last_outgoing']['last_update_ts']) { return true; } | |
130 | + | |
131 | + let delta = Date.now() - Number(matrix.buddies[partner]['last_outgoing']['last_update_ts']); | |
132 | + let isHealthy = delta <= maxHealthyWaitMs; | |
133 | + | |
134 | + logger.verbose('Partner healthy analized', {partner: partner, isHealthy: isHealthy, delta: delta, maxHealthyWaitMs: maxHealthyWaitMs}); | |
135 | + return isHealthy; | |
136 | +} | |
137 | + | |
138 | + | |
112 | 139 | MatrixUtil.prototype._updateLastResponseTime = function(partner) { |
113 | 140 | let matrix = this.matrix; |
114 | 141 | let logger = this.logger; |