Browse Source

More refactoring

qdn
CalDescent 3 years ago
parent
commit
f938d8c878
  1. 2
      src/main/java/org/qortal/api/resource/WebsiteResource.java
  2. 28
      src/main/java/org/qortal/network/message/GetDataFileMessage.java
  3. 6
      src/main/java/org/qortal/repository/hsqldb/HSQLDBArbitraryRepository.java
  4. 9
      src/main/java/org/qortal/storage/DataFile.java

2
src/main/java/org/qortal/api/resource/WebsiteResource.java

@ -295,7 +295,7 @@ public class WebsiteResource {
byte[] chunkHashes = transactionData.getChunkHashes(); byte[] chunkHashes = transactionData.getChunkHashes();
// Load data file(s) // Load data file(s)
DataFile dataFile = DataFile.fromDigest(digest); DataFile dataFile = DataFile.fromHash(digest);
if (!dataFile.exists()) { if (!dataFile.exists()) {
if (!dataFile.allChunksExist(chunkHashes)) { if (!dataFile.allChunksExist(chunkHashes)) {
// TODO: fetch them? // TODO: fetch them?

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

@ -1,5 +1,7 @@
package org.qortal.network.message; package org.qortal.network.message;
import org.qortal.transform.transaction.TransactionTransformer;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
@ -7,33 +9,33 @@ import java.nio.ByteBuffer;
public class GetDataFileMessage extends Message { public class GetDataFileMessage extends Message {
private static final int DIGEST_LENGTH = 32; private static final int HASH_LENGTH = TransactionTransformer.SHA256_LENGTH;
private final byte[] digest; private final byte[] hash;
public GetDataFileMessage(byte[] digest) { public GetDataFileMessage(byte[] hash) {
this(-1, digest); this(-1, hash);
} }
private GetDataFileMessage(int id, byte[] digest) { private GetDataFileMessage(int id, byte[] hash) {
super(id, MessageType.GET_DATA_FILE); super(id, MessageType.GET_DATA_FILE);
this.digest = digest; this.hash = hash;
} }
public byte[] getDigest() { public byte[] getHash() {
return this.digest; return this.hash;
} }
public static Message fromByteBuffer(int id, ByteBuffer bytes) throws UnsupportedEncodingException { public static Message fromByteBuffer(int id, ByteBuffer bytes) throws UnsupportedEncodingException {
if (bytes.remaining() != DIGEST_LENGTH) if (bytes.remaining() != HASH_LENGTH)
return null; return null;
byte[] digest = new byte[DIGEST_LENGTH]; byte[] hash = new byte[HASH_LENGTH];
bytes.get(digest); bytes.get(hash);
return new GetDataFileMessage(id, digest); return new GetDataFileMessage(id, hash);
} }
@Override @Override
@ -41,7 +43,7 @@ public class GetDataFileMessage extends Message {
try { try {
ByteArrayOutputStream bytes = new ByteArrayOutputStream(); ByteArrayOutputStream bytes = new ByteArrayOutputStream();
bytes.write(this.digest); bytes.write(this.hash);
return bytes.toByteArray(); return bytes.toByteArray();
} catch (IOException e) { } catch (IOException e) {

6
src/main/java/org/qortal/repository/hsqldb/HSQLDBArbitraryRepository.java

@ -47,7 +47,7 @@ public class HSQLDBArbitraryRepository implements ArbitraryRepository {
byte[] chunkHashes = transactionData.getChunkHashes(); byte[] chunkHashes = transactionData.getChunkHashes();
// Load data file(s) // Load data file(s)
DataFile dataFile = DataFile.fromDigest(digest); DataFile dataFile = DataFile.fromHash(digest);
if (chunkHashes.length > 0) { if (chunkHashes.length > 0) {
dataFile.addChunkHashes(chunkHashes); dataFile.addChunkHashes(chunkHashes);
} }
@ -82,7 +82,7 @@ public class HSQLDBArbitraryRepository implements ArbitraryRepository {
byte[] chunkHashes = transactionData.getChunkHashes(); byte[] chunkHashes = transactionData.getChunkHashes();
// Load data file(s) // Load data file(s)
DataFile dataFile = DataFile.fromDigest(digest); DataFile dataFile = DataFile.fromHash(digest);
if (chunkHashes.length > 0) { if (chunkHashes.length > 0) {
dataFile.addChunkHashes(chunkHashes); dataFile.addChunkHashes(chunkHashes);
} }
@ -167,7 +167,7 @@ public class HSQLDBArbitraryRepository implements ArbitraryRepository {
byte[] chunkHashes = arbitraryTransactionData.getChunkHashes(); byte[] chunkHashes = arbitraryTransactionData.getChunkHashes();
// Load data file(s) // Load data file(s)
DataFile dataFile = DataFile.fromDigest(digest); DataFile dataFile = DataFile.fromHash(digest);
if (chunkHashes.length > 0) { if (chunkHashes.length > 0) {
dataFile.addChunkHashes(chunkHashes); dataFile.addChunkHashes(chunkHashes);
} }

9
src/main/java/org/qortal/storage/DataFile.java

@ -90,8 +90,8 @@ public class DataFile {
return new DataFile(hash58); return new DataFile(hash58);
} }
public static DataFile fromDigest(byte[] digest) { public static DataFile fromHash(byte[] hash) {
return DataFile.fromHash58(Base58.encode(digest)); return DataFile.fromHash58(Base58.encode(hash));
} }
public static DataFile fromPath(String path) { public static DataFile fromPath(String path) {
@ -100,7 +100,7 @@ public class DataFile {
try { try {
byte[] fileContent = Files.readAllBytes(file.toPath()); byte[] fileContent = Files.readAllBytes(file.toPath());
byte[] digest = Crypto.digest(fileContent); byte[] digest = Crypto.digest(fileContent);
DataFile dataFile = DataFile.fromDigest(digest); DataFile dataFile = DataFile.fromHash(digest);
// Copy file to base directory if needed // Copy file to base directory if needed
Path filePath = Paths.get(path); Path filePath = Paths.get(path);
@ -194,6 +194,9 @@ public class DataFile {
} }
public void addChunkHashes(byte[] chunks) { public void addChunkHashes(byte[] chunks) {
if (chunks == null || chunks.length == 0) {
return;
}
ByteBuffer byteBuffer = ByteBuffer.wrap(chunks); ByteBuffer byteBuffer = ByteBuffer.wrap(chunks);
while (byteBuffer.remaining() >= TransactionTransformer.SHA256_LENGTH) { while (byteBuffer.remaining() >= TransactionTransformer.SHA256_LENGTH) {
byte[] chunkDigest = new byte[TransactionTransformer.SHA256_LENGTH]; byte[] chunkDigest = new byte[TransactionTransformer.SHA256_LENGTH];

Loading…
Cancel
Save