test('multilevel should not blow up when using live stream overlapping a sublevel',function(t){

  var db = sublevel(level('./_testdb'));
  var subdb = db.sublevel('s');

  livestream.install(db);

  db.pre(function(ch,add){
    if(ch.type == "put") add({type:"put",key:ch.key,value:ch.value,prefix:subdb});
  });

  multilevel.writeManifest(db, __dirname + '/manifest.json');

  var manifest = require('./manifest.json');
  var client = multilevel.client(manifest);
  var server = multilevel.server(db);

  server.pipe(client.createRpcStream()).pipe(server);

  client.liveStream().on('data',function(change){

    t.ok(change,'should not have crashed');

    t.end();
    
  });

  db.put('z',1);

});
DbServer.prototype.writeManifest = function (manifest) {
    var db,
        filepath;

    db = this.db;
    filepath = Path.resolve(__dirname, this.settings.manifest);
    Multilevel.writeManifest(db, filepath);
};
Exemple #3
0
 .on('end', () => {
     multilevel.writeManifest(sub, METADATA_PATH + MANIFEST_JSON);
     this.logger.info('starting metadata file backend server');
     /* We start a server that will server the sublevel
        capable rootDB to clients */
     net.createServer(con => {
         con.pipe(multilevel.server(sub)).pipe(con);
     }).listen(METADATA_PORT);
 });
Exemple #4
0
 sub.createSub = (subName, cb) => {
     try {
         sub.sublevel(subName);
         multilevel.writeManifest(sub,
                                  METADATA_PATH +
                                  MANIFEST_JSON_TMP);
         fs.renameSync(METADATA_PATH + MANIFEST_JSON_TMP,
                       METADATA_PATH + MANIFEST_JSON);
         cb();
     } catch (err) {
         cb(err);
     }
 };
Exemple #5
0
function Server (options) {
  if (!(this instanceof Server)) { return new Server(options) }
  EventEmitter.call(this);

  options = options || {};
  this.location = options.location || 'level-agile.db';
  this.valueEncoding = options.valueEncoding || 'json';

  this.db = sublevel(level(this.location, { valueEncoding: this.valueEncoding }));

  LiveStream.install(this.db);

  //
  // Creates a manifest file for use with client, kept here for autogeneration
  //
  multilevel.writeManifest(this.db, path.join(__dirname, '..', 'manifest.json'));

  this.server = net.createServer(this._onSocketConnect.bind(this));

};
  }
  else {
    res.end('oops!')
  }
});

// 2: db
var levelup = require('levelup');
var memdown = require('memdown');
server.listen(process.env.PORT || 3000);

var db = levelup('/messages', {db: memdown});
// 3: sockets

var multilevel = require('multilevel');
multilevel.writeManifest(db, __dirname + '/manifest.json');

var engine = EngineServer(function(stream) {
    stream.pipe(multilevel.server(db)).pipe(stream);
});

 var level = require('level')

 level('/tmp/level-live-stream',
   {createIfMissing: true}, function (err, db) {

   var liveStream = require('level-live-stream')(db)

   liveStream
     .on('data', console.log)