Skip to content
Snippets Groups Projects
Select Git revision
  • 20dae07d857961deedeb94c76507949c1d05d1ec
  • dev default protected
  • release/1.9.1 protected
  • pini-1.8-docker
  • pini-sync-onlypeers
  • duniter-v2s-issue-123-industrialize-releases
  • feature/build-aarch64-nodejs16
  • release/1.8 protected
  • pini-docker
  • ci_tags
  • fix/1448/1.8/txs_not_stored
  • feature/node-20
  • fix/1441/node_summary_with_storage
  • fix/1442/improve_bma_tx_history
  • feature/wotwizard-1.8
  • release/1.9 protected
  • 1.7 protected
  • feature/docker-set-latest protected
  • feature/fast-docker-build-1.8.4
  • fast-docker-build protected
  • feature/dump-distance
  • v1.8.7 protected
  • v1.8.7-rc4 protected
  • v1.8.7-rc3 protected
  • v1.8.7-rc2 protected
  • v1.8.7-rc1 protected
  • v1.8.6 protected
  • v1.7.23 protected
  • v1.8.5 protected
  • v1.8.4 protected
  • v1.8.3 protected
  • v1.8.2 protected
  • v1.8.1 protected
  • v1.8.0 protected
  • v1.8.0-rc1 protected
  • v1.8.0-beta5 protected
  • v1.8.0-beta4 protected
  • v1.8.0-beta3 protected
  • v1.8.0-beta2 protected
  • v1.8.0-beta protected
  • v1.7.21 protected
41 results

server.js

Blame
  • server.js 9.16 KiB
    var stream     = require('stream');
    var async      = require('async');
    var util       = require('util');
    var _          = require('underscore');
    var mongoose   = require('mongoose');
    var common     = require('./app/lib/common');
    var constants  = require('./app/lib/constants');
    var express    = require('express');
    var request    = require('request');
    var http       = require('http');
    var log4js     = require('log4js');
    
    var models = ['Identity', 'Certification', 'Amendment', 'Coin', 'Configuration', 'Forward', 'Key', 'Link', 'TrustedKey', 'Merkle', 'Peer', 'PublicKey', 'Wallet', 'Transaction', 'TxMemory', 'Membership', 'Block'];
    var INNER_WRITE = true;
    
    function Server (dbConf, overrideConf, interceptors, onInit) {
    
      stream.Duplex.call(this, { objectMode : true });
    
      var logger  = require('./app/lib/logger')(dbConf.name);
      var that = this;
      that.conn = null;
      that.conf = null;
    
      var initFunctions = [
        function (done) {
          that.connect(function (err) {
            that.emit('connected', err);
            done(err);
          });
        },
        function (done) {
          that.initServices(function (err) {
            that.emit('services', err);
            done(err);
          });
        }
      ];
    
      var todoOnInit = initFunctions.concat(onInit).concat([
      ]);
    
      this._write = function (obj, enc, writeDone, isInnerWrite) {
        that.submit(obj, isInnerWrite, function (err, res) {
          if (isInnerWrite) {
            writeDone(err, res);
          } else {
            writeDone();
          }
        });
      };
    
      this.submit = function (obj, isInnerWrite, done) {
        async.waterfall([
          function (next){
            var i = 0;
            var treatment = null;
            while (i < interceptors.length && !treatment) {
              if (interceptors[i].matches(obj)) {
                treatment = interceptors[i].treatment;
              }
              i++;
            }
            if (typeof treatment == 'function') {
              // Handle the incoming object
              treatment(that, obj, next);
            } else {
              var err = 'Unknown document type ' + JSON.stringify(obj);
              that.emit('error', Error(err));
              next(err);