mirror of https://github.com/qortal/qortal
CalDescent
3 years ago
2 changed files with 96 additions and 0 deletions
@ -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; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -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…
Reference in new issue