|
|
|
var kad=require("kad");
|
|
|
|
var levelup=require("levelup");
|
|
|
|
|
|
|
|
module.exports.create=function(conf,cb){
|
|
|
|
var dht= kad({
|
|
|
|
address:conf.kadAddress,
|
|
|
|
port:conf.kadPort,
|
|
|
|
storage:levelup(conf.kadStore),
|
|
|
|
seeds:conf.kadSeeds,
|
|
|
|
transport: kad.transports.UDP,
|
|
|
|
});
|
|
|
|
|
|
|
|
var getIndex=function(cName,f){
|
|
|
|
dht.get(cName+'=>index',function(e,out){
|
|
|
|
e && console.error(e) || f(Number(out));
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
cb({
|
|
|
|
message:function(cName, content, cb){
|
|
|
|
getIndex(cName, function(index){
|
|
|
|
index+=1;
|
|
|
|
dht.put(cName+'=>index', ''+index,function(e){
|
|
|
|
e && console.error("ERROR updating index (%s): %s",index,e) ||
|
|
|
|
console.log("PUT SUCCESS: %s", cName+'=>index')
|
|
|
|
});
|
|
|
|
dht.put(cName+'=>'+index, content, function(e){
|
|
|
|
e && console.error("ERROR updating value at %s: %s",cName+'=>'+index,e)||
|
|
|
|
console.log("PUT SUCCESS: %s", cName+'=>index')
|
|
|
|
cb();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
},
|
|
|
|
getMessages: function(cName, cb){
|
|
|
|
getIndex(cName, function(index){
|
|
|
|
for(var i=index;i>=0;i--){
|
|
|
|
dht.get(cName+'=>'+i,function(e,out){
|
|
|
|
if(e) return console.error("DHT GET ERROR: %s",e);
|
|
|
|
console.log("GET SUCCESS: %s", cName+'=>index')
|
|
|
|
cb(out);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
},
|
|
|
|
});
|
|
|
|
};
|