Select Git revision
Forked from
clients / Cesium-grp / Cesium
Source project has a limited visibility.
-
Benoit Lavenier authoredBenoit Lavenier authored
server.js 13.11 KiB
"use strict";
var stream = require('stream');
var async = require('async');
var util = require('util');
var co = require('co');
var _ = require('underscore');
var Q = require('q');
var parsers = require('./app/lib/streams/parsers/doc');
var constants = require('./app/lib/constants');
var fileDAL = require('./app/lib/dal/fileDAL');
var jsonpckg = require('./package.json');
var router = require('./app/lib/streams/router');
var multicaster = require('./app/lib/streams/multicaster');
var base58 = require('./app/lib/base58');
var crypto = require('./app/lib/crypto');
var Peer = require('./app/lib/entity/peer');
var signature = require('./app/lib/signature');
var common = require('./app/lib/common');
var directory = require('./app/lib/directory');
var INNER_WRITE = true;
// Add methods to String and Date
common.shim();
function Server (dbConf, overrideConf) {
stream.Duplex.call(this, { objectMode: true });
let home = directory.getHome(dbConf.name, dbConf.home);
var logger = require('./app/lib/logger')('server');
var that = this;
var connectionPromise, servicesPromise;
that.conf = null;
that.dal = null;
that.version = jsonpckg.version;
var documentsMapping = {};
// Unused, but made mandatory by Duplex interface
this._read = function () {
};
this._write = function (obj, enc, writeDone, isInnerWrite) {
that.submit(obj, isInnerWrite, function (err, res) {
if (isInnerWrite) {
writeDone(err, res);
} else {
writeDone();
}
});
};
this.connectDB = function (useDefaultConf) {
// Connect only once
return connectionPromise || (connectionPromise = that.connect(useDefaultConf));
};
this.initWithServices = function (done) {
// Init services only once
return servicesPromise || (servicesPromise = that.connectDB()
.then(that.initServices)
.then(function(err) {
done && done(err);
return that;
})
.catch(done));
};
this.submit = function (obj, isInnerWrite, done) {
return co(function *() {