root / src / chord / CheckPredecessor.java
History | View | Annotate | Download (1002 Bytes)
1 |
package chord; |
---|---|
2 |
|
3 |
import chord.ChordManager; |
4 |
import chord.ConnectionInfo; |
5 |
import messages.MessageForwarder; |
6 |
import messages.PingMessage; |
7 |
import peer.Peer; |
8 |
|
9 |
import java.net.InetAddress; |
10 |
|
11 |
public class CheckPredecessor implements Runnable{ |
12 |
public static boolean dead; |
13 |
private int timeout; |
14 |
|
15 |
public CheckPredecessor(int timeout){ |
16 |
this.timeout = timeout;
|
17 |
} |
18 |
|
19 |
@Override
|
20 |
public void run(){ |
21 |
synchronized(this){ |
22 |
if (ChordManager.predecessor != null) { |
23 |
try {
|
24 |
MessageForwarder.sendMessage(new PingMessage(new ConnectionInfo(null, InetAddress.getLocalHost().getHostAddress(), Peer.port), ChordManager.predecessor.getIp(), ChordManager.predecessor.getPort())); |
25 |
this.wait(timeout);
|
26 |
} catch (Exception e) { |
27 |
e.printStackTrace(); |
28 |
} |
29 |
if (dead) {
|
30 |
ChordManager.predecessor = null;
|
31 |
} |
32 |
} |
33 |
} |
34 |
} |
35 |
} |