Intermediate commit, NaiveRealTime, still need to change AddNode

This commit is contained in:
Curtis SerVaas
2014-10-08 16:05:06 -04:00
parent bf1c0b0683
commit b9f0448db7
3 changed files with 44 additions and 22 deletions
+20 -8
View File
@@ -17,6 +17,8 @@ var getAndSendRevHistory = require("./revAlgorithm.js").getAndSendRevHistory;
var MessageQueue =require("./MessageQueue.js");
console.log("MessageQueue", MessageQueue);
var CURRENT_TIMESTAMP = Date.now();
module.exports = {
validateParArr: function(parId, parArr){
@@ -121,21 +123,31 @@ function attachLogInListeners(socket){
// });
var syncValidation = function(data, timestampData, queueData, emitData){
if(timestampData[1] != CURRENT_TIMESTAMP){
socket.emit("OFF_SYNC");
}
else{
CURRENT_TIMESTAMP = timestampData[0];
socket.broadcast.emit(emitData[0], emitData[1]);
MessageQueue.queueOrDo(action);
}
}
//maybe emit sooner...
//need to broadcast parentArray.
socket.on("newNode", function(data){
MessageQueue.queueOrDo(['newNode', data, socket])
//timestampData=[CURRENT_TIMESTAMP, oldTime]
socket.on("newNode", function(data, timestampData){
syncValidation(data, timestampData, ['newNode', data, socket], ["dummy", 1234]);
//(todo = set IDs on client (instead of negative Ids));
});
socket.on("removeNode", function(data){
socket.broadcast.emit("removeNode", data);
MessageQueue.queueOrDo(['removeNode', data, socket])
socket.on("removeNode", function(data, timestampData){
syncValidation(data, timestampData, ['removeNode', data, socket], ["removeNode", data]);
});
socket.on("movedNode", function(data){
socket.broadcast.emit("movedNode", [data[0], data[2]]);
MessageQueue.queueOrDo(['movedNode', data, socket])
socket.on("movedNode", function(data, timestampData){
syncValidation(data, timestampData, ['movedNode', data, socket],[ "movedNode", [data[0],data[2]] ]);
});
}
+2 -2
View File
@@ -40,12 +40,12 @@ module.exports.addNode = addNode;
// return rootID;
// }
function findAndSocketSend(socket){
function findAndSocketSend(socket, CURRENT_TIMESTAMP){
var nodes = {'keeping': 'calm'}
MyNode.find().populate('authorId','_id google.name' ).exec(function(err, nodes){
if(!err){
// require("underscore").each(nodes, function(node){console.log(node)});
socket.emit('nodeData', nodes)
socket.emit('nodeData', nodes, CURRENT_TIMESTAMP)
return {'hell': 'yes'}
}else{
socket.emit('nodeData', "error!!!")
+22 -12
View File
@@ -1,4 +1,4 @@
var CURRENT_TIMESTAMP;
var socket = null;
var AppRouter = Backbone.Router.extend({
@@ -99,14 +99,19 @@ var that = this;
socket.emitWrapper = function(eventName, data){
console.log(this);
if(this.socket.connected){ this.emit(eventName, data); }
if(this.socket.connected){
var oldTime = CURRENT_TIMESTAMP;
CURRENT_TIMESTAMP = Date.now();
this.emit(eventName, data, [CURRENT_TIMESTAMP, oldTime]);
}
else{ //(alert + lock)
alert("Internet connection down. Edits not synced. Refresh when back online.");
}
}
socket.on('nodeData', function(data){
socket.on('nodeData', function(data, SERVER_TIMESTAMP){
//alert("data");
CURRENT_TIMESTAMP = SERVER_TIMESTAMP;
console.log(data);
nodesCollection = new NodesCollection(data);
var id = nodesCollection.findWhere({text: "0root"}).get("_id");
@@ -267,15 +272,20 @@ socket.on("revControl", function(data){
//To be continued...
});
socket.on("VALIDATE", function(data){
var parId = data[0];
var parArr = data[1];
var thisParArr = nodesCollection.findWhere({_id: parId}).get("children");
if(!_.isEqual(thisParArr, parArr)){
alert("syncing error.Edits no longer synced. Please refresh browser");
socket = null;
}
});
socket.on("OFF_SYNC", function(){
alert("syncing error.Edits no longer synced. Please refresh browser");
socket = null;
});
// socket.on("VALIDATE", function(data){
// var parId = data[0];
// var parArr = data[1];
// var thisParArr = nodesCollection.findWhere({_id: parId}).get("children");
// if(!_.isEqual(thisParArr, parArr)){
// alert("syncing error.Edits no longer synced. Please refresh browser");
// socket = null;
// }
// });
socket.emit("nodeRequest");