aboutsummaryrefslogtreecommitdiff
path: root/lib/app.js
diff options
context:
space:
mode:
authorcel <cel@f/6sQ6d2CMxRUhLpspgGIulDxDCwYD7DzFzPNr7u5AU=.ed25519>2017-04-02 12:20:20 -0400
committercel <cel@f/6sQ6d2CMxRUhLpspgGIulDxDCwYD7DzFzPNr7u5AU=.ed25519>2017-04-04 17:40:09 -0700
commit487a99ede50bdbbd5308b1b446b9fc354d0a8c27 (patch)
tree3c1108d425f788fc83609e3de309714d9cca8f49 /lib/app.js
parentba3a576d5ae23bed296e9d2329b42e975482fc1a (diff)
downloadpatchfoo-487a99ede50bdbbd5308b1b446b9fc354d0a8c27.tar.gz
patchfoo-487a99ede50bdbbd5308b1b446b9fc354d0a8c27.zip
Add peers page
Diffstat (limited to 'lib/app.js')
-rw-r--r--lib/app.js28
1 files changed, 28 insertions, 0 deletions
diff --git a/lib/app.js b/lib/app.js
index 230768a..25cb02c 100644
--- a/lib/app.js
+++ b/lib/app.js
@@ -157,3 +157,31 @@ App.prototype.createLogStream = function (opts) {
? this.sbot.createFeedStream(opts)
: this.sbot.createLogStream(opts)
}
+
+var stateVals = {
+ connected: 3,
+ connecting: 2,
+ disconnecting: 1,
+}
+
+function comparePeers(a, b) {
+ var aState = stateVals[a.state] || 0
+ var bState = stateVals[b.state] || 0
+ return bState > aState ? 1 : bState < aState ? -1 :
+ b.stateChange - a.stateChange
+}
+
+App.prototype.streamPeers = function (opts) {
+ var gossip = this.sbot.gossip
+ return u.readNext(function (cb) {
+ gossip.peers(function (err, peers) {
+ if (err) return cb(err)
+ if (opts) peers = peers.filter(function (peer) {
+ for (var k in opts) if (opts[k] !== peer[k]) return false
+ return true
+ })
+ peers.sort(comparePeers)
+ cb(null, pull.values(peers))
+ })
+ })
+}