Browse Source

Added DataFileMessage and GetDataFileMessage, used for requesting and sending files between peers.

qdn
CalDescent 3 years ago
parent
commit
5ac676d201
  1. 44
      src/main/java/org/qortal/network/message/DataFileMessage.java
  2. 52
      src/main/java/org/qortal/network/message/GetDataFileMessage.java

44
src/main/java/org/qortal/network/message/DataFileMessage.java

@ -0,0 +1,44 @@
package org.qortal.network.message;
import org.qortal.storage.DataFile;
import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
public class DataFileMessage extends Message {
private final DataFile dataFile;
public DataFileMessage(DataFile dataFile) {
super(MessageType.DATA_FILE);
this.dataFile = dataFile;
}
public DataFile getDataFile() {
return this.dataFile;
}
public static Message fromByteBuffer(int id, ByteBuffer byteBuffer) throws UnsupportedEncodingException {
byte[] bytes = new byte[byteBuffer.remaining()];
byteBuffer.get(bytes);
DataFile dataFile = new DataFile(bytes);
return new DataFileMessage(dataFile);
}
@Override
protected byte[] toData() {
if (this.dataFile == null)
return null;
return this.dataFile.getBytes();
}
public DataFileMessage cloneWithNewId(int newId) {
DataFileMessage clone = new DataFileMessage(this.dataFile);
clone.setId(newId);
return clone;
}
}

52
src/main/java/org/qortal/network/message/GetDataFileMessage.java

@ -0,0 +1,52 @@
package org.qortal.network.message;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
public class GetDataFileMessage extends Message {
private static final int DIGEST_LENGTH = 32;
private final byte[] digest;
public GetDataFileMessage(byte[] digest) {
this(-1, digest);
}
private GetDataFileMessage(int id, byte[] digest) {
super(id, MessageType.GET_DATA_FILE);
this.digest = digest;
}
public byte[] getDigest() {
return this.digest;
}
public static Message fromByteBuffer(int id, ByteBuffer bytes) throws UnsupportedEncodingException {
if (bytes.remaining() != DIGEST_LENGTH)
return null;
byte[] digest = new byte[DIGEST_LENGTH];
bytes.get(digest);
return new GetDataFileMessage(id, digest);
}
@Override
protected byte[] toData() {
try {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
bytes.write(this.digest);
return bytes.toByteArray();
} catch (IOException e) {
return null;
}
}
}
Loading…
Cancel
Save