Removed callback.. not needed

This commit is contained in:
senft-lap 2012-12-04 15:11:35 +01:00
parent 89cf73f20f
commit 8be0e09db8
2 changed files with 13 additions and 23 deletions

View File

@ -23,14 +23,10 @@ public class Ack {
// The channel to re-send the message on
private DatagramChannel channel;
OnAckReceive callback;
public Ack(int id, SocketAddress address, DatagramChannel channel,
OnAckReceive onReceive) {
public Ack(int id, SocketAddress address, DatagramChannel channel) {
this.id = id;
this.address = address;
this.channel = channel;
this.callback = onReceive;
startThread();
}
@ -58,10 +54,6 @@ public class Ack {
}
public void setReceived() {
if (callback != null) {
callback.onReceive();
}
// Stop thread
try {
if (thread != null) {

View File

@ -40,8 +40,6 @@ public class Node {
private Random generator;
protected boolean receivedAckForLastInvite;
public Node() {
System.setProperty("java.net.preferIPv4Stack", "true");
generator = new Random(System.currentTimeMillis());
@ -75,7 +73,6 @@ public class Node {
LOGGER.log(Level.FINE, "Name: " + getName() + ", Spawning new node.");
Node newNode = new Node();
addNeighbor(newNode.getAddress());
receivedAckForLastInvite = false;
sendInvite(newNode);
return newNode;
@ -84,12 +81,7 @@ public class Node {
private boolean sendInvite(final Node newNode) {
ByteBuffer buffer = ByteBuffer.allocate(BUF_SIZE);
Ack ack = generateAck(newNode.getAddress(), new OnAckReceive() {
@Override
public void onReceive() {
receivedAckForLastInvite = true;
}
});
Ack ack = generateAck(newNode.getAddress());
buffer.put(MessageType.INVITE);
buffer.putInt(ack.getId());
@ -113,12 +105,12 @@ public class Node {
* the SocketAddress the ack should be received from
* @return the identifier for this ack
*/
private Ack generateAck(final SocketAddress addr, OnAckReceive callback) {
private Ack generateAck(final SocketAddress addr) {
int ack_id = generator.nextInt();
while (acks.containsKey(ack_id)) {
ack_id = generator.nextInt();
}
Ack newAck = new Ack(ack_id, addr, channel, callback);
Ack newAck = new Ack(ack_id, addr, channel);
acks.put(ack_id, newAck);
return newAck;
@ -223,6 +215,11 @@ public class Node {
public void gatherInformationOfNetwork() {
network = new HashMap<String, List<String>>();
network.put(getName(), new ArrayList<String>());
for (SocketAddress n : neighbors) {
network.get(getName()).add(n.toString());
}
try {
byte[] myAddr = BufferUtil.addrToBytes(((InetSocketAddress) channel
.getLocalAddress()));
@ -268,7 +265,7 @@ public class Node {
int idToRemove = getNeighborId(node);
if (idToRemove != -1) {
removed = neighbors.remove(idToRemove);
network.get(getName()).remove(node.toString());
network.get(getName()).remove(node.toString());
}
return removed != null;
@ -279,7 +276,8 @@ public class Node {
* from the network.
*/
public void leave() {
if (!receivedAckForLastInvite || neighbors.isEmpty()) {
// if (!receivedAckForLastInvite || neighbors.isEmpty()) {
if (!acks.isEmpty() || neighbors.isEmpty()) {
// This means the bootstrapping has not been finished. Either I have
// not been invited by a node, or the Node I invited didn't ack by
// now
@ -289,7 +287,7 @@ public class Node {
for (int i = 0; i < neighbors.size(); i++) {
ByteBuffer buffer = ByteBuffer.allocate(BUF_SIZE);
Ack ack = generateAck(neighbors.get(i), null);
Ack ack = generateAck(neighbors.get(i));
buffer.put(MessageType.LEAVE);
buffer.putInt(ack.getId());