From fd0edf3207a0e96746f242f99793cb0278e75afd Mon Sep 17 00:00:00 2001
From: cgeek <cem.moreau@gmail.com>
Date: Fri, 27 May 2016 00:20:56 +0200
Subject: [PATCH] JS API: added `routing` method

---
 app/controllers/webmin.controller.js |  9 +--------
 index.js                             |  9 +--------
 server.js                            | 14 ++++++++++++++
 3 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/app/controllers/webmin.controller.js b/app/controllers/webmin.controller.js
index e35ad76c3..04d85bad7 100644
--- a/app/controllers/webmin.controller.js
+++ b/app/controllers/webmin.controller.js
@@ -19,7 +19,6 @@ let bma = require('../lib/streams/bma');
 let Identity = require('../lib/entity/identity');
 let network = require('../lib/network');
 let AbstractController = require('../controllers/abstract');
-var multicaster = require('../lib/streams/multicaster');
 var logger = require('../lib/logger')('webmin');
 
 module.exports = (dbConf, overConf) => {
@@ -49,13 +48,7 @@ function WebAdmin (dbConf, overConf) {
     yield pluggedConfP;
 
     // Routing documents
-    server
-    // The router asks for multicasting of documents
-      .pipe(server.router())
-      // The documents get sent to peers
-      .pipe(multicaster(server.conf))
-      // The multicaster may answer 'unreachable peer'
-      .pipe(server.router());
+    server.routing();
 
     return plugForDAL();
   });
diff --git a/index.js b/index.js
index d8e001ba1..16e2bb4ca 100644
--- a/index.js
+++ b/index.js
@@ -5,7 +5,6 @@ var Server = require('./server');
 var bma  = require('./app/lib/streams/bma');
 var webmin  = require('./app/lib/streams/webmin');
 var upnp = require('./app/lib/upnp');
-var multicaster = require('./app/lib/streams/multicaster');
 var logger = require('./app/lib/logger')('ucoin');
 
 module.exports = function (dbConf, overConf) {
@@ -27,13 +26,7 @@ module.exports.statics = {
     let bmapi = yield bma(server, null, conf.httplogs);
 
     // Routing documents
-    server
-    // The router asks for multicasting of documents
-      .pipe(server.router())
-      // The documents get sent to peers
-      .pipe(multicaster(server.conf))
-      // The multicaster may answer 'unreachable peer'
-      .pipe(server.router());
+    server.routing();
 
     // Services
     yield module.exports.statics.startServices(server);
diff --git a/server.js b/server.js
index c4fed7bf1..2f5d1fc64 100644
--- a/server.js
+++ b/server.js
@@ -17,6 +17,7 @@ var signature   = require('./app/lib/signature');
 var directory   = require('./app/lib/directory');
 var dos2unix    = require('./app/lib/dos2unix');
 var Synchroniser = require('./app/lib/sync');
+var multicaster = require('./app/lib/streams/multicaster');
 
 function Server (dbConf, overrideConf) {
 
@@ -429,6 +430,19 @@ function Server (dbConf, overrideConf) {
     };
   };
 
+  /**
+   * Enable routing features:
+   *   - The server will try to send documents to the network
+   *   - The server will eventually be notified of network failures
+   */
+  this.routing = () => {
+    // The router asks for multicasting of documents
+    this.pipe(this.router())
+      // The documents get sent to peers
+      .pipe(multicaster(this.conf))
+      // The multicaster may answer 'unreachable peer'
+      .pipe(this.router());
+  };
 }
 
 util.inherits(Server, stream.Duplex);
-- 
GitLab