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