-/* Copyright (c) 2006-2017. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2006-2018. The SimGrid Team. All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
create();
joinSuccess = true;
} else {
- int knownId = Integer.valueOf(args[1]);
- deadline = Integer.valueOf(args[3]);
+ int knownId = Integer.parseInt(args[1]);
+ deadline = Integer.parseInt(args[3]);
Msg.debug("Hey! Let's join the system with the id " + id + ".");
joinSuccess = join(knownId);
}
- if (joinSuccess) {
- double currentClock = Msg.getClock();
- while (currentClock < (initTime + deadline) && currentClock < Common.MAX_SIMULATION_TIME) {
- if (commReceive == null) {
- commReceive = Task.irecv(this.mailbox);
- }
- try {
- if (!commReceive.test()) {
- if (currentClock >= nextStabilizeDate) {
- stabilize();
- nextStabilizeDate = Msg.getClock() + Common.PERIODIC_STABILIZE_DELAY;
- } else if (currentClock >= nextFixFingersDate) {
- fixFingers();
- nextFixFingersDate = Msg.getClock() + Common.PERIODIC_FIX_FINGERS_DELAY;
- } else if (currentClock >= nextCheckPredecessorDate) {
- this.checkPredecessor();
- nextCheckPredecessorDate = Msg.getClock() + Common.PERIODIC_CHECK_PREDECESSOR_DELAY;
- } else if (currentClock >= nextLookupDate) {
- this.randomLookup();
- nextLookupDate = Msg.getClock() + Common.PERIODIC_LOOKUP_DELAY;
- } else {
- waitFor(5);
- }
- currentClock = Msg.getClock();
+
+ if (!joinSuccess) {
+ Msg.info("I couldn't join the ring");
+ return;
+ }
+
+ double currentClock = Msg.getClock();
+ while (currentClock < (initTime + deadline) && currentClock < Common.MAX_SIMULATION_TIME) {
+ if (commReceive == null) {
+ commReceive = Task.irecv(this.mailbox);
+ }
+ try {
+ if (!commReceive.test()) {
+ if (currentClock >= nextStabilizeDate) {
+ stabilize();
+ nextStabilizeDate = Msg.getClock() + Common.PERIODIC_STABILIZE_DELAY;
+ } else if (currentClock >= nextFixFingersDate) {
+ fixFingers();
+ nextFixFingersDate = Msg.getClock() + Common.PERIODIC_FIX_FINGERS_DELAY;
+ } else if (currentClock >= nextCheckPredecessorDate) {
+ this.checkPredecessor();
+ nextCheckPredecessorDate = Msg.getClock() + Common.PERIODIC_CHECK_PREDECESSOR_DELAY;
+ } else if (currentClock >= nextLookupDate) {
+ this.randomLookup();
+ nextLookupDate = Msg.getClock() + Common.PERIODIC_LOOKUP_DELAY;
} else {
- handleTask(commReceive.getTask());
- currentClock = Msg.getClock();
- commReceive = null;
+ waitFor(5);
}
- }
- catch (Exception e) {
+ currentClock = Msg.getClock();
+ } else {
+ handleTask(commReceive.getTask());
currentClock = Msg.getClock();
commReceive = null;
}
}
- leave();
- if (commReceive != null) {
+ catch (Exception e) {
+ currentClock = Msg.getClock();
commReceive = null;
}
- } else {
- Msg.info("I couldn't join the ring");
+ }
+ leave();
+ if (commReceive != null) {
+ commReceive = null;
}
}
private void leave() {
Msg.debug("Well Guys! I Think it's time for me to quit ;)");
- quitNotify(1); //Notify my successor
- quitNotify(-1); //Notify my predecessor.
- }
-
- /**
- * @brief Notifies the successor or the predecessor of the current node of the departure
- * @param to 1 to notify the successor, -1 to notify the predecessor
- */
- static private void quitNotify( int to) {
- //TODO
+ // TODO: Notify my successor and predecessor.
}
/** @brief Initializes the current node as the first one of the system */
}
catch (MsgException e) {
commReceive = null;
- stop = true;
}
}
catch (MsgException e) {
// Performs a find successor request to a random id.
private void randomLookup() {
- int id = 1337;
- //Msg.info("Making a lookup request for id " + id);
- findSuccessor(id);
+ int dest = 1337;
+ findSuccessor(dest);
}
/**
* @param end upper bound
* @return a non-zero value if id in in [start, end]
*/
- static private boolean isInInterval(int id, int start, int end) {
+ private static boolean isInInterval(int id, int start, int end) {
int normId = normalize(id);
int normStart = normalize(start);
int normEnd = normalize(end);
* @param id an id
* @return the corresponding normalized id
*/
- static private int normalize(int id) {
+ private static int normalize(int id) {
return id & (Common.NB_KEYS - 1);
}