Revision 3
Update
Reclaim.java | ||
---|---|---|
1 |
package peer.protocols.reclaim; |
|
2 |
|
|
3 |
import disk.ChunkManagement; |
|
4 |
import peer.Peer; |
|
5 |
|
|
6 |
/** |
|
7 |
* Reclaim |
|
8 |
*/ |
|
9 |
public class Reclaim implements Runnable { |
|
10 |
|
|
11 |
private Peer peer; |
|
12 |
private String fileId; |
|
13 |
private int chunkNo; |
|
14 |
|
|
15 |
public Reclaim(Peer peer, String fileId, int chunkNo) { |
|
16 |
this.peer = peer; |
|
17 |
this.fileId = fileId; |
|
18 |
this.chunkNo = chunkNo; |
|
19 |
} |
|
20 |
|
|
21 |
public void reclaim() { |
|
22 |
|
|
23 |
} |
|
24 |
|
|
25 |
@Override |
|
26 |
public void run() { |
|
27 |
reclaim(); |
|
28 |
} |
|
29 |
|
|
30 |
|
|
1 |
package peer.protocols.reclaim; |
|
2 |
|
|
3 |
import chunk.Chunk; |
|
4 |
import disk.ChunkManagement; |
|
5 |
import peer.Peer; |
|
6 |
import peer.protocols.backup.BackupChunk; |
|
7 |
|
|
8 |
/** |
|
9 |
* Reclaim |
|
10 |
*/ |
|
11 |
public class Reclaim implements Runnable { |
|
12 |
|
|
13 |
private Peer peer; |
|
14 |
private String fileId; |
|
15 |
private int chunkNo; |
|
16 |
|
|
17 |
public Reclaim(Peer peer, String fileId, int chunkNo) { |
|
18 |
this.peer = peer; |
|
19 |
this.fileId = fileId; |
|
20 |
this.chunkNo = chunkNo; |
|
21 |
} |
|
22 |
|
|
23 |
public void reclaim() { |
|
24 |
Chunk chunk = peer.getDisk().getChunk(fileId, chunkNo); |
|
25 |
if (chunk != null) { |
|
26 |
try { |
|
27 |
Thread.sleep((long) (Math.random() * 400 + 1)); |
|
28 |
} catch (InterruptedException e) { |
|
29 |
e.printStackTrace(); |
|
30 |
} |
|
31 |
if (ChunkManagement.getInstance().getStores(fileId, chunkNo) < chunk.getRepDegree()) { |
|
32 |
BackupChunk backupChunk = new BackupChunk(peer, chunk); |
|
33 |
Thread bThread = new Thread(backupChunk); |
|
34 |
bThread.start(); |
|
35 |
} |
|
36 |
} |
|
37 |
|
|
38 |
} |
|
39 |
|
|
40 |
@Override |
|
41 |
public void run() { |
|
42 |
reclaim(); |
|
43 |
} |
|
44 |
|
|
31 | 45 |
} |
Also available in: Unified diff