Project

General

Profile

Statistics
| Revision:

root / src / utils / Chunk.java

History | View | Annotate | Download (1.87 KB)

1
package utils;
2

    
3
import peer.Peer;
4

    
5
import java.io.IOException;
6
import java.util.Arrays;
7

    
8
public class Chunk {
9
    private static int SIZE = 64000;
10

    
11
    private byte[] header;
12
    private byte[] data;
13
    private byte[] buffer;
14

    
15
    private int chunkDataLength;
16
    private int chunkLength;
17

    
18
    private String headerMsg;
19

    
20
    public Chunk(byte[] h, FileController fileController) throws IOException{ //Chunk to backup
21
        this.header = h;
22
        this.data = getChunkData(fileController);
23
        this.buffer = mergeByteArrays(this.header, this.data);
24
                this.chunkLength = this.chunkDataLength + this.header.length;
25
    }
26

    
27
    public Chunk(byte[] dataBuffer, String messageType, String hashFileId, String chunkNo){ //Chunk to restore
28
        this.data = dataBuffer;
29
        this.chunkDataLength = this.data.length;
30
        String headerMsg = messageType + " " + Utils.version + " " + Peer.getSenderId() + " " + hashFileId + " " + chunkNo + " " + "\r\n\r\n";
31
        byte[] buf = headerMsg.getBytes();
32
        this.headerMsg = headerMsg;
33
        this.header = buf;
34
        this.buffer = mergeByteArrays(this.header, this.data);
35
        this.chunkLength = this.header.length + this.chunkDataLength;
36
    }
37

    
38
    public byte[] getChunkData(FileController fileController) throws IOException{
39
        byte[] dataBuffer = new byte[SIZE];
40
        this.chunkDataLength = fileController.getFileStream().read(dataBuffer,0,SIZE);
41
        return dataBuffer;
42
    }
43

    
44
    public byte[] getBuffer(){
45
        this.buffer  = Arrays.copyOf(this.buffer,this.chunkLength);
46
        return buffer;
47
    }
48

    
49
    public byte[] mergeByteArrays(byte[] header, byte[] content){
50
                
51
                byte[] ret = new byte[header.length + content.length];
52
                System.arraycopy(header, 0, ret, 0, header.length);
53
                System.arraycopy(content, 0, ret, header.length, content.length);
54
                
55
                return ret;
56
        }
57

    
58
        public String getHeaderMsg(){
59
        return headerMsg;
60
    }
61
}