root / src / Storage / ChunksManager.java @ 2
History | View | Annotate | Download (2.02 KB)
1 | 2 | up20160340 | package Storage; |
---|---|---|---|
2 | |||
3 | |||
4 | import java.io.FileInputStream; |
||
5 | import java.io.IOException; |
||
6 | import java.util.ArrayList; |
||
7 | |||
8 | import static Global.Globals.MAX_CHUNK_SIZE; |
||
9 | |||
10 | public class ChunksManager { |
||
11 | |||
12 | |||
13 | ArrayList<Chunk> chunks;
|
||
14 | |||
15 | int peerId;
|
||
16 | |||
17 | int replicationDegree;
|
||
18 | |||
19 | public ChunksManager(String filepath, int rep, int peerId) throws IOException { |
||
20 | this.peerId = peerId;
|
||
21 | replicationDegree = rep; |
||
22 | FileInputStream file = new FileInputStream(filepath); |
||
23 | String[] b = filepath.split("/"); |
||
24 | this.chunks = new ArrayList<>(); |
||
25 | split(file, b[b.length - 1]);
|
||
26 | } |
||
27 | |||
28 | private void split(FileInputStream fileInfo, String fileID) { |
||
29 | int x = 0; |
||
30 | int chunkNo = 0; |
||
31 | |||
32 | try {
|
||
33 | |||
34 | while (x != -1) { |
||
35 | byte[] a = new byte[MAX_CHUNK_SIZE]; |
||
36 | byte[] temp; |
||
37 | |||
38 | x = fileInfo.read(a); |
||
39 | |||
40 | |||
41 | if (x == -1) { |
||
42 | temp = new byte[0]; |
||
43 | Chunk chunk = new Chunk(chunkNo, temp, peerId, fileID, replicationDegree);
|
||
44 | chunks.add(chunkNo, chunk); |
||
45 | break;
|
||
46 | } else if (x < MAX_CHUNK_SIZE) { |
||
47 | temp = new byte[x]; |
||
48 | System.arraycopy(a, 0, temp, 0, x); |
||
49 | Chunk chunk = new Chunk(chunkNo, temp, peerId, fileID, replicationDegree);
|
||
50 | chunks.add(chunkNo, chunk); |
||
51 | break;
|
||
52 | } |
||
53 | Chunk chunk = new Chunk(chunkNo, a, peerId, fileID, replicationDegree);
|
||
54 | chunks.add(chunkNo, chunk); |
||
55 | chunkNo++; |
||
56 | |||
57 | } |
||
58 | |||
59 | /*if(chunks.get(chunkNo).getInfo().length == MAX_CHUNK_SIZE){
|
||
60 | chunkNo++;
|
||
61 | chunks.add(chunkNo,new Chunk(chunkNo, new byte[0], peerId));
|
||
62 | }*/
|
||
63 | |||
64 | fileInfo.close(); |
||
65 | } catch (IOException e) { |
||
66 | //e.printStackTrace();
|
||
67 | } |
||
68 | } |
||
69 | |||
70 | public ArrayList<Chunk> getChunks() { |
||
71 | return chunks;
|
||
72 | } |
||
73 | |||
74 | public int getPeerId() { |
||
75 | return peerId;
|
||
76 | } |
||
77 | } |