protected Comm commReceive;
///Last time I changed a finger or my predecessor
protected double lastChangeDate;
protected Comm commReceive;
///Last time I changed a finger or my predecessor
protected double lastChangeDate;
Msg.debug("Receiving a 'Find Successor' request from " + fTask.issuerHostName + " for id " + fTask.requestId);
// is my successor the successor?
if (isInInterval(fTask.requestId, this.id + 1, fingers[0])) {
Msg.debug("Receiving a 'Find Successor' request from " + fTask.issuerHostName + " for id " + fTask.requestId);
// is my successor the successor?
if (isInInterval(fTask.requestId, this.id + 1, fingers[0])) {
FindSuccessorAnswerTask answer = new FindSuccessorAnswerTask(getHost().getName(), mailbox, fingers[0]);
answer.dsend(fTask.answerTo);
} else {
// otherwise, forward the request to the closest preceding finger in my table
int closest = closestPrecedingNode(fTask.requestId);
FindSuccessorAnswerTask answer = new FindSuccessorAnswerTask(getHost().getName(), mailbox, fingers[0]);
answer.dsend(fTask.answerTo);
} else {
// otherwise, forward the request to the closest preceding finger in my table
int closest = closestPrecedingNode(fTask.requestId);
- int id = this.findSuccessor(this.id + (int)Math.pow(2,i)); //FIXME: SLOW
- if (id != -1) {
- if (id != fingers[i]) {
- setFinger(i, id);
+ int successorId = this.findSuccessor(this.id + (int)Math.pow(2,i)); //FIXME: SLOW
+ if (successorId != -1) {
+ if (successorId != fingers[i]) {
+ setFinger(i, successorId);
* @return a non-zero value if id in in [start, end]
*/
static boolean isInInterval(int id, int start, int end) {
* @return a non-zero value if id in in [start, end]
*/
static boolean isInInterval(int id, int start, int end) {