plugins/gossip/index.jsView |
---|
10 | 10 … | var stats = require('statistics') |
11 | 11 … | var Schedule = require('./schedule') |
12 | 12 … | var Init = require('./init') |
13 | 13 … | var AtomicFile = require('atomic-file') |
| 14 … | +var fs = require('fs') |
14 | 15 … | var path = require('path') |
15 | 16 … | var deepEqual = require('deep-equal') |
16 | 17 … | |
17 | 18 … | function isFunction (f) { |
77 | 78 … | }) |
78 | 79 … | |
79 | 80 … | var timer_ping = 5*6e4 |
80 | 81 … | |
| 82 … | + function setConfig(name, value) { |
| 83 … | + config.gossip = config.gossip || {} |
| 84 … | + config.gossip[name] = value |
| 85 … | + |
| 86 … | + var cfgPath = path.join(config.path, 'config') |
| 87 … | + var existingConfig = {} |
| 88 … | + |
| 89 … | + |
| 90 … | + try { existingConfig = JSON.parse(fs.readFileSync(cfgPath, 'utf-8')) } |
| 91 … | + catch (e) {} |
| 92 … | + |
| 93 … | + |
| 94 … | + existingConfig.gossip = existingConfig.gossip || {} |
| 95 … | + existingConfig.gossip[name] = value |
| 96 … | + |
| 97 … | + |
| 98 … | + fs.writeFileSync(cfgPath, JSON.stringify(existingConfig, null, 2), 'utf-8') |
| 99 … | + } |
| 100 … | + |
81 | 101 … | var gossip = { |
82 | 102 … | wakeup: 0, |
83 | 103 … | peers: function () { |
84 | 104 … | return peers |
190 | 210 … | server.peers[id].forEach(function (peer) { |
191 | 211 … | peer.close(true) |
192 | 212 … | }) |
193 | 213 … | return gossip.wakeup = Date.now() |
194 | | - } |
| 214 … | + }, |
| 215 … | + enable: valid.sync(function (type) { |
| 216 … | + type = type || 'global' |
| 217 … | + setConfig(type, true) |
| 218 … | + return 'enabled gossip type ' + type |
| 219 … | + }, 'string?'), |
| 220 … | + disable: valid.sync(function (type) { |
| 221 … | + type = type || 'global' |
| 222 … | + setConfig(type, false) |
| 223 … | + return 'disabled gossip type ' + type |
| 224 … | + }, 'string?') |
195 | 225 … | } |
196 | 226 … | |
197 | 227 … | closeScheduler = Schedule (gossip, config, server) |
198 | 228 … | Init (gossip, config, server) |