decreased sync timeout

This commit is contained in:
Kevin Jahns 2014-09-29 12:26:04 +02:00
parent 6623bd6134
commit 607d442abc
36 changed files with 45 additions and 46 deletions

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
!function n(e,t,r){function o(u,s){if(!t[u]){if(!e[u]){var c="function"==typeof require&&require;if(!s&&c)return c(u,!0);if(i)return i(u,!0);throw new Error("Cannot find module '"+u+"'")}var a=t[u]={exports:{}};e[u][0].call(a.exports,function(n){var t=e[u][1][n];return o(t?t:n)},a,a.exports,n,e,t,r)}return t[u].exports}for(var i="function"==typeof require&&require,u=0;u<r.length;u++)o(r[u]);return o}({1:[function(n,e){var t;t=function(){var n,e,t;return t=null,2===arguments.length?(t=new Peer(arguments[0]),e=arguments[1]):(t=new Peer(arguments[0],arguments[1]),t.on("error",function(n){throw new Error("Peerjs connector: "+n)}),t.on("disconnected",function(){throw new Error("Peerjs connector disconnected from signalling server. Cannot accept new connections. Not fatal, but not so good either..")}),e=arguments[2]),n=function(){function n(n,e,r,o){var i,u;this.engine=n,this.HB=e,this.execution_listener=r,this.yatta=o,this.peer=t,this.connections={},this.peer.on("connection",function(n){return function(e){return n.addConnection(e)}}(this)),u=function(n){return function(){var e,t,r,o;r=n.connections,o=[];for(t in r)e=r[t],o.push(e.send({sync_state_vector:n.HB.getOperationCounter()}));return o}}(this),setInterval(u,8e3),i=function(n){return function(e){var t,r,o,i;if(e.uid.creator===n.HB.getUserId()&&"string"!=typeof e.uid.op_number){o=n.connections,i=[];for(r in o)t=o[r],i.push(t.send({op:e}));return i}}}(this),this.execution_listener.push(i)}return n.prototype.connectToPeer=function(n){return null==this.connections[n]&&n!==this.yatta.getUserId()?this.addConnection(t.connect(n)):void 0},n.prototype.getAllConnectionIds=function(){var n,e;e=[];for(n in this.connections)e.push(n);return e},n.prototype.addConnection=function(n){var e,t,r;return this.connections[n.peer]=n,t=!1,e=!1,n.on("data",function(r){return function(o){var i,u,s,c,a;if("empty_message"===o);else if(null!=o.HB){if(t=!0,r.engine.applyOpsCheckDouble(o.HB),!o.initialized)return n.send({conns:r.getAllConnectionIds()})}else{if(null!=o.op)return r.engine.applyOp(o.op);if(null!=o.conns){for(c=o.conns,a=[],u=0,s=c.length;s>u;u++)i=c[u],a.push(r.connectToPeer(i));return a}if(null!=o.sync_state_vector)return console.log("turinae"),n.send({HB:r.yatta.getHistoryBuffer()._encode(o.sync_state_vector),initialized:!0});if(null==o.state_vector)throw new Error("Can't parse this operation");if(!e)return n.send({HB:r.yatta.getHistoryBuffer()._encode(o.state_vector),initialized:!1}),e=!0}}}(this)),r=function(e){return function(){return n.send({state_vector:e.HB.getOperationCounter()}),t?void 0:setTimeout(r,100)}}(this),r()},n}(),t.on("open",function(t){return e(n,t)})},e.exports=t,"undefined"!=typeof window&&null!==window&&(null==window.Y&&(window.Y={}),window.Y.createPeerJsConnector=t)},{}]},{},[1]); !function n(e,t,r){function o(u,s){if(!t[u]){if(!e[u]){var c="function"==typeof require&&require;if(!s&&c)return c(u,!0);if(i)return i(u,!0);throw new Error("Cannot find module '"+u+"'")}var a=t[u]={exports:{}};e[u][0].call(a.exports,function(n){var t=e[u][1][n];return o(t?t:n)},a,a.exports,n,e,t,r)}return t[u].exports}for(var i="function"==typeof require&&require,u=0;u<r.length;u++)o(r[u]);return o}({1:[function(n,e){var t;t=function(){var n,e,t;return t=null,2===arguments.length?(t=new Peer(arguments[0]),e=arguments[1]):(t=new Peer(arguments[0],arguments[1]),t.on("error",function(n){throw new Error("Peerjs connector: "+n)}),t.on("disconnected",function(){throw new Error("Peerjs connector disconnected from signalling server. Cannot accept new connections. Not fatal, but not so good either..")}),e=arguments[2]),n=function(){function n(n,e,r,o){var i,u;this.engine=n,this.HB=e,this.execution_listener=r,this.yatta=o,this.peer=t,this.connections={},this.peer.on("connection",function(n){return function(e){return n.addConnection(e)}}(this)),u=function(n){return function(){var e,t,r,o;r=n.connections,o=[];for(t in r)e=r[t],o.push(e.send({sync_state_vector:n.HB.getOperationCounter()}));return o}}(this),setInterval(u,4e3),i=function(n){return function(e){var t,r,o,i;if(e.uid.creator===n.HB.getUserId()&&"string"!=typeof e.uid.op_number){o=n.connections,i=[];for(r in o)t=o[r],i.push(t.send({op:e}));return i}}}(this),this.execution_listener.push(i)}return n.prototype.connectToPeer=function(n){return null==this.connections[n]&&n!==this.yatta.getUserId()?this.addConnection(t.connect(n)):void 0},n.prototype.getAllConnectionIds=function(){var n,e;e=[];for(n in this.connections)e.push(n);return e},n.prototype.addConnection=function(n){var e,t,r;return this.connections[n.peer]=n,t=!1,e=!1,n.on("data",function(r){return function(o){var i,u,s,c,a;if("empty_message"===o);else if(null!=o.HB){if(t=!0,r.engine.applyOpsCheckDouble(o.HB),!o.initialized)return n.send({conns:r.getAllConnectionIds()})}else{if(null!=o.op)return r.engine.applyOp(o.op);if(null!=o.conns){for(c=o.conns,a=[],u=0,s=c.length;s>u;u++)i=c[u],a.push(r.connectToPeer(i));return a}if(null!=o.sync_state_vector)return n.send({HB:r.yatta.getHistoryBuffer()._encode(o.sync_state_vector),initialized:!0});if(null==o.state_vector)throw new Error("Can't parse this operation "+o);if(!e)return n.send({HB:r.yatta.getHistoryBuffer()._encode(o.state_vector),initialized:!1}),e=!0}}}(this)),r=function(e){return function(){return n.send({state_vector:e.HB.getOperationCounter()}),t?void 0:setTimeout(r,100)}}(this),r()},n}(),t.on("open",function(t){return e(n,t)})},e.exports=t,"undefined"!=typeof window&&null!==window&&(null==window.Y&&(window.Y={}),window.Y.createPeerJsConnector=t)},{}]},{},[1]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -45,7 +45,7 @@
return _results; return _results;
}; };
})(this); })(this);
setInterval(sync_every_collaborator, 8000); setInterval(sync_every_collaborator, 4000);
send_ = (function(_this) { send_ = (function(_this) {
return function(o) { return function(o) {
var conn, conn_id, _ref, _results; var conn, conn_id, _ref, _results;
@ -109,7 +109,6 @@
} }
return _results; return _results;
} else if (data.sync_state_vector != null) { } else if (data.sync_state_vector != null) {
console.log("turinae");
return conn.send({ return conn.send({
HB: _this.yatta.getHistoryBuffer()._encode(data.sync_state_vector), HB: _this.yatta.getHistoryBuffer()._encode(data.sync_state_vector),
initialized: true initialized: true
@ -123,7 +122,7 @@
return initialized_him = true; return initialized_him = true;
} }
} else { } else {
throw new Error("Can't parse this operation"); throw new Error("Can't parse this operation " + data);
} }
}; };
})(this)); })(this));

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -271,7 +271,7 @@
</div> </div>
</div> </div>
<div id='footer'> <div id='footer'>
September 29, 14 11:58:14 by September 29, 14 12:25:30 by
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'> <a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
Codo Codo
</a> </a>

View File

@ -302,7 +302,7 @@ data from the received intent.</p>
</div> </div>
</div> </div>
<div id='footer'> <div id='footer'>
September 29, 14 11:58:14 by September 29, 14 12:25:30 by
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'> <a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
Codo Codo
</a> </a>

View File

@ -335,7 +335,7 @@ JsonFramework was initialized (Depending on the HistoryBuffer implementation).</
</div> </div>
</div> </div>
<div id='footer'> <div id='footer'>
September 29, 14 11:58:14 by September 29, 14 12:25:30 by
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'> <a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
Codo Codo
</a> </a>

View File

@ -466,7 +466,7 @@ if (x.type === &quot;JsonType&quot;) {
</div> </div>
</div> </div>
<div id='footer'> <div id='footer'>
September 29, 14 11:58:14 by September 29, 14 12:25:30 by
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'> <a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
Codo Codo
</a> </a>

View File

@ -139,7 +139,7 @@ console.log(w.newProperty == &quot;Awesome&quot;) # true!</code></pre>
</div> </div>
</div> </div>
<div id='footer'> <div id='footer'>
September 29, 14 11:58:14 by September 29, 14 12:25:30 by
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'> <a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
Codo Codo
</a> </a>

View File

@ -222,7 +222,7 @@ on how to do that with urls.</p>
</div> </div>
</div> </div>
<div id='footer'> <div id='footer'>
September 29, 14 11:58:14 by September 29, 14 12:25:30 by
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'> <a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
Codo Codo
</a> </a>

View File

@ -356,7 +356,7 @@ JsonFramework was initialized (Depending on the HistoryBuffer implementation).</
</div> </div>
</div> </div>
<div id='footer'> <div id='footer'>
September 29, 14 11:58:14 by September 29, 14 12:25:30 by
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'> <a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
Codo Codo
</a> </a>

View File

@ -455,7 +455,7 @@ yatta.bind(textbox);</code></pre>
</div> </div>
</div> </div>
<div id='footer'> <div id='footer'>
September 29, 14 11:58:14 by September 29, 14 12:25:30 by
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'> <a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
Codo Codo
</a> </a>

View File

@ -252,7 +252,7 @@ This result can be send to other clients.</p>
</div> </div>
</div> </div>
<div id='footer'> <div id='footer'>
September 29, 14 11:58:14 by September 29, 14 12:25:30 by
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'> <a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
Codo Codo
</a> </a>

View File

@ -38,7 +38,7 @@
</div> </div>
</div> </div>
<div id='footer'> <div id='footer'>
September 29, 14 11:58:14 by September 29, 14 12:25:30 by
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'> <a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
Codo Codo
</a> </a>

View File

@ -70,7 +70,7 @@ But I would become really motivated if you gave me some feedback :) (<a href="ht
<ul> <ul>
<li>XML support</li> <li>XML support</li>
</ul> </ul>
<h2 id="support">Support</h2><p>Please report any issues to the <a href="https://github.com/DadaMonad/Yatta/issues">Github issue page</a>!</p><h2 id="license">License</h2><p>Yatta! is licensed under the <a href="./LICENSE.txt">MIT License</a>.</p><a href="&#109;&#97;&#x69;&#108;&#x74;&#111;&#58;&#107;&#101;&#118;&#x69;&#110;&#46;&#106;&#97;&#x68;&#110;&#115;&#64;&#x72;&#x77;&#116;&#x68;&#45;&#97;&#x61;&#x63;&#104;&#x65;&#110;&#x2e;&#x64;&#101;">&#107;&#101;&#118;&#x69;&#110;&#46;&#106;&#97;&#x68;&#110;&#115;&#64;&#x72;&#x77;&#116;&#x68;&#45;&#97;&#x61;&#x63;&#104;&#x65;&#110;&#x2e;&#x64;&#101;</a> <h2 id="support">Support</h2><p>Please report any issues to the <a href="https://github.com/DadaMonad/Yatta/issues">Github issue page</a>!</p><h2 id="license">License</h2><p>Yatta! is licensed under the <a href="./LICENSE.txt">MIT License</a>.</p><a href="&#x6d;&#x61;&#105;&#108;&#116;&#111;&#x3a;&#x6b;&#x65;&#118;&#x69;&#x6e;&#46;&#106;&#97;&#x68;&#110;&#115;&#x40;&#114;&#119;&#x74;&#104;&#45;&#97;&#97;&#x63;&#x68;&#101;&#110;&#46;&#x64;&#x65;">&#x6b;&#x65;&#118;&#x69;&#x6e;&#46;&#106;&#97;&#x68;&#110;&#115;&#x40;&#114;&#119;&#x74;&#104;&#45;&#97;&#97;&#x63;&#x68;&#101;&#110;&#46;&#x64;&#x65;</a>
@ -79,7 +79,7 @@ But I would become really motivated if you gave me some feedback :) (<a href="ht
</div> </div>
</div> </div>
<div id='footer'> <div id='footer'>
September 29, 14 11:58:14 by September 29, 14 12:25:30 by
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'> <a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
Codo Codo
</a> </a>

View File

@ -100,7 +100,7 @@
</div> </div>
</div> </div>
<div id='footer'> <div id='footer'>
September 29, 14 11:58:14 by September 29, 14 12:25:30 by
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'> <a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
Codo Codo
</a> </a>

View File

@ -158,7 +158,7 @@
</div> </div>
</div> </div>
<div id='footer'> <div id='footer'>
September 29, 14 11:58:14 by September 29, 14 12:25:30 by
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'> <a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
Codo Codo
</a> </a>

View File

@ -39,7 +39,7 @@
</table> </table>
</div> </div>
<div id='footer'> <div id='footer'>
September 29, 14 11:58:14 by September 29, 14 12:25:30 by
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'> <a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
Codo Codo
</a> </a>

View File

@ -48,7 +48,7 @@
</dl> </dl>
</div> </div>
<div id='footer'> <div id='footer'>
September 29, 14 11:58:14 by September 29, 14 12:25:30 by
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'> <a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
Codo Codo
</a> </a>

View File

@ -60,7 +60,7 @@
</dl> </dl>
</div> </div>
<div id='footer'> <div id='footer'>
September 29, 14 11:58:14 by September 29, 14 12:25:30 by
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'> <a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
Codo Codo
</a> </a>

View File

@ -60,7 +60,7 @@
</dl> </dl>
</div> </div>
<div id='footer'> <div id='footer'>
September 29, 14 11:58:14 by September 29, 14 12:25:30 by
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'> <a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
Codo Codo
</a> </a>

View File

@ -48,7 +48,7 @@
</dl> </dl>
</div> </div>
<div id='footer'> <div id='footer'>
September 29, 14 11:58:14 by September 29, 14 12:25:30 by
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'> <a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
Codo Codo
</a> </a>

View File

@ -39,7 +39,7 @@
</table> </table>
</div> </div>
<div id='footer'> <div id='footer'>
September 29, 14 11:58:14 by September 29, 14 12:25:30 by
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'> <a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
Codo Codo
</a> </a>

View File

@ -39,7 +39,7 @@
</table> </table>
</div> </div>
<div id='footer'> <div id='footer'>
September 29, 14 11:58:14 by September 29, 14 12:25:30 by
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'> <a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
Codo Codo
</a> </a>

View File

@ -39,7 +39,7 @@
</table> </table>
</div> </div>
<div id='footer'> <div id='footer'>
September 29, 14 11:58:14 by September 29, 14 12:25:30 by
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'> <a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
Codo Codo
</a> </a>

View File

@ -39,7 +39,7 @@
</table> </table>
</div> </div>
<div id='footer'> <div id='footer'>
September 29, 14 11:58:14 by September 29, 14 12:25:30 by
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'> <a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
Codo Codo
</a> </a>

View File

@ -65,7 +65,7 @@
</div> </div>
</div> </div>
<div id='footer'> <div id='footer'>
September 29, 14 11:58:14 by September 29, 14 12:25:30 by
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'> <a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
Codo Codo
</a> </a>

View File

@ -37,7 +37,7 @@
</table> </table>
</div> </div>
<div id='footer'> <div id='footer'>
September 29, 14 11:58:14 by September 29, 14 12:25:30 by
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'> <a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
Codo Codo
</a> </a>

View File

@ -47,7 +47,7 @@ createPeerJsConnector = ()->
for conn_id, conn of @connections for conn_id, conn of @connections
conn.send conn.send
sync_state_vector: @HB.getOperationCounter() sync_state_vector: @HB.getOperationCounter()
setInterval sync_every_collaborator, 8000 setInterval sync_every_collaborator, 4000
send_ = (o)=> send_ = (o)=>
if o.uid.creator is @HB.getUserId() and (typeof o.uid.op_number isnt "string") if o.uid.creator is @HB.getUserId() and (typeof o.uid.op_number isnt "string")
@ -122,7 +122,7 @@ createPeerJsConnector = ()->
initialized: false initialized: false
initialized_him = true initialized_him = true
else else
throw new Error "Can't parse this operation" throw new Error "Can't parse this operation #{data}"
sendStateVector = ()=> sendStateVector = ()=>
conn.send conn.send

View File

@ -20,7 +20,7 @@ class HistoryBuffer
@garbage = [] # Will be cleaned on next call of garbageCollector @garbage = [] # Will be cleaned on next call of garbageCollector
@trash = [] # Is deleted. Wait until it is not used anymore. @trash = [] # Is deleted. Wait until it is not used anymore.
@performGarbageCollection = true @performGarbageCollection = true
@garbageCollectTimeout = 8000 @garbageCollectTimeout = 1000
@reserved_identifier_counter = 0 @reserved_identifier_counter = 0
setTimeout @emptyGarbage, @garbageCollectTimeout setTimeout @emptyGarbage, @garbageCollectTimeout
@ -96,6 +96,7 @@ class HistoryBuffer
not state_vector[user]? or state_vector[user] <= o_number not state_vector[user]? or state_vector[user] <= o_number
for u_name,user of @buffer for u_name,user of @buffer
# TODO next, if @state_vector[user] <= state_vector[user]
for o_number,o of user for o_number,o of user
if o.doSync and unknown(u_name, o_number) if o.doSync and unknown(u_name, o_number)
# its necessary to send it, and not known in state_vector # its necessary to send it, and not known in state_vector