mirror of
https://github.com/overte-org/overte.git
synced 2025-04-22 02:04:05 +02:00
working for one;
This commit is contained in:
parent
bc8a8ac703
commit
130eb6b619
2 changed files with 26 additions and 29 deletions
examples
|
@ -145,32 +145,30 @@ function virtualBatonf(options) {
|
|||
// It would be great if we had a way to know how many subscribers our channel has. Failing that...
|
||||
var nNack = 0, previousNSubscribers = 0, lastGathering = 0, thisTimeout = electionTimeout;
|
||||
function nSubscribers() { // Answer the number of subscribers.
|
||||
// // To find nQuorum, we need to know how many scripts are being run using this batonName, which isn't
|
||||
// // the same as the number of clients!
|
||||
// //
|
||||
// // If we overestimate by too much, we may fail to reach consensus, which triggers a new
|
||||
// // election proposal, so we take the number of acceptors to be the max(nPromises, nAccepted)
|
||||
// // + nNack reported in the previous round.
|
||||
// //
|
||||
// // If we understimate by too much, there can be different pockets on the Internet that each
|
||||
// // believe they have agreement on different holders of the baton, which is precisely what
|
||||
// // the virtualBaton is supposed to avoid. Therefore we need to allow 'nack' to gather stragglers.
|
||||
// To find nQuorum, we need to know how many scripts are being run using this batonName, which isn't
|
||||
// the same as the number of clients!
|
||||
|
||||
// If we overestimate by too much, we may fail to reach consensus, which triggers a new
|
||||
// election proposal, so we take the number of acceptors to be the max(nPromises, nAccepted)
|
||||
// + nNack reported in the previous round.
|
||||
|
||||
// If we understimate by too much, there can be different pockets on the Internet that each
|
||||
// believe they have agreement on different holders of the baton, which is precisely what
|
||||
// the virtualBaton is supposed to avoid. Therefore we need to allow 'nack' to gather stragglers.
|
||||
|
||||
// var now = Date.now(), elapsed = now - lastGathering;
|
||||
// if (elapsed >= thisTimeout) {
|
||||
// previousNSubscribers = Math.max(nPromises, nAccepted) + nNack;
|
||||
// lastGathering = now;
|
||||
// } // ...otherwise we use the previous value unchanged.
|
||||
var now = Date.now(), elapsed = now - lastGathering;
|
||||
if (elapsed >= thisTimeout) {
|
||||
previousNSubscribers = Math.max(nPromises, nAccepted) + nNack;
|
||||
lastGathering = now;
|
||||
} // ...otherwise we use the previous value unchanged.
|
||||
|
||||
// // On startup, we do one proposal that we cannot possibly close, so that we'll
|
||||
// // lock things up for the full electionTimeout to gather responses.
|
||||
// if (!previousNSubscribers) {
|
||||
// var LARGE_INTEGER = Number.MAX_SAFE_INTEGER || (-1 >>> 1); // QT doesn't define the ECMA constant. Max int will do for our purposes.
|
||||
// previousNSubscribers = LARGE_INTEGER;
|
||||
// }
|
||||
// return previousNSubscribers;
|
||||
print("EBL NUMBER SUBSCRIBERS ", AvatarList.getAvatarIdentifiers().length);
|
||||
return AvatarList.getAvatarIdentifiers().length;
|
||||
// On startup, we do one proposal that we cannot possibly close, so that we'll
|
||||
// lock things up for the full electionTimeout to gather responses.
|
||||
if (!previousNSubscribers) {
|
||||
var LARGE_INTEGER = Number.MAX_SAFE_INTEGER || (-1 >>> 1); // QT doesn't define the ECMA constant. Max int will do for our purposes.
|
||||
previousNSubscribers = LARGE_INTEGER;
|
||||
}
|
||||
return previousNSubscribers;
|
||||
}
|
||||
|
||||
// MAIN ALGORITHM
|
||||
|
@ -373,8 +371,7 @@ function virtualBatonf(options) {
|
|||
};
|
||||
|
||||
// Gather nAcceptors by making two proposals with some gathering time, even without a claim.
|
||||
print("EBL PROPOSE HAS BEEN COMMENTED OUT!");
|
||||
// propose();
|
||||
propose();
|
||||
return exports;
|
||||
}
|
||||
if (typeof module !== 'undefined') { // Allow testing in nodejs.
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
// We already have our injector so just restart it
|
||||
_this.soundInjector.restart();
|
||||
}
|
||||
print("EBL START UPDATE")
|
||||
print("EBL START UPDATE");
|
||||
Entities.editEntity(_this.batonDebugModel, {visible: true});
|
||||
_this.playSoundInterval = Script.setInterval(function() {
|
||||
// print("EBL PLAY THE SOUND");
|
||||
|
@ -41,8 +41,8 @@
|
|||
}
|
||||
|
||||
function stopUpdateAndReclaim() {
|
||||
print("EBL STOP UPDATE AND RECLAIM")
|
||||
// when the baton is release
|
||||
print("EBL CLAIM BATON")
|
||||
if (_this.soundIntervalConnected === true) {
|
||||
Script.clearInterval(_this.playSoundInterval);
|
||||
_this.soundIntervalConnected = false;
|
||||
|
@ -69,7 +69,7 @@
|
|||
baton = virtualBaton({
|
||||
// One winner for each entity
|
||||
batonName: "io.highfidelity.soundEntityBatonTest:" + _this.entityID,
|
||||
debugFlow: true
|
||||
// debugFlow: true
|
||||
});
|
||||
stopUpdateAndReclaim();
|
||||
},
|
||||
|
|
Loading…
Reference in a new issue