This commit is contained in:
Frank 2021-08-06 23:20:39 +02:00
parent 6883287c72
commit 3438c86de2
6 changed files with 182 additions and 169 deletions

View file

@ -12,28 +12,24 @@ import ru.bclib.BCLib;
import ru.bclib.api.dataexchange.DataHandler;
import ru.bclib.api.dataexchange.DataHandlerDescriptor;
import ru.bclib.gui.screens.ConfirmRestartScreen;
import ru.bclib.gui.screens.SyncFilesScreen;
import ru.bclib.util.Pair;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.OpenOption;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
public class SendFiles extends DataHandler {
public static DataHandlerDescriptor DESCRIPTOR = new DataHandlerDescriptor(new ResourceLocation(BCLib.MOD_ID, "send_files"), SendFiles::new, false, false);
protected List<DataExchange.AutoFileSyncEntry> files;
protected List<AutoFileSyncEntry> files;
private String token = "";
public SendFiles(){
this(null, "");
}
public SendFiles(List<DataExchange.AutoFileSyncEntry> files, String token) {
public SendFiles(List<AutoFileSyncEntry> files, String token) {
super(DESCRIPTOR.IDENTIFIER, true);
this.files = files;
this.token = token;
@ -41,18 +37,18 @@ public class SendFiles extends DataHandler {
@Override
protected void serializeData(FriendlyByteBuf buf) {
List<DataExchange.AutoFileSyncEntry> existingFiles = files.stream().filter(e -> e.fileName.exists()).collect(Collectors.toList());
List<AutoFileSyncEntry> existingFiles = files.stream().filter(e -> e.fileName.exists()).collect(Collectors.toList());
writeString(buf, token);
buf.writeInt(existingFiles.size());
BCLib.LOGGER.info("Sending " + existingFiles.size() + " Files to Client:");
for (DataExchange.AutoFileSyncEntry entry : existingFiles) {
for (AutoFileSyncEntry entry : existingFiles) {
int length = entry.serializeContent(buf);
BCLib.LOGGER.info(" - " + entry + " (" + length + " Bytes)");
}
}
private List<Pair<DataExchange.AutoFileSyncEntry, byte[]>> receivedFiles;
private List<Pair<AutoFileSyncEntry, byte[]>> receivedFiles;
@Override
protected void deserializeFromIncomingData(FriendlyByteBuf buf, PacketSender responseSender, boolean fromClient) {
token = readString(buf);
@ -66,7 +62,7 @@ public class SendFiles extends DataHandler {
receivedFiles = new ArrayList<>(size);
BCLib.LOGGER.info("Server sent " + size + " Files:");
for (int i=0; i<size; i++){
Pair<DataExchange.AutoFileSyncEntry, byte[]> p = DataExchange.AutoFileSyncEntry.deserializeContent(buf);
Pair<AutoFileSyncEntry, byte[]> p = AutoFileSyncEntry.deserializeContent(buf);
if (p.first != null) {
receivedFiles.add(p);
BCLib.LOGGER.info(" - " + p.first + " (" + p.second.length + " Bytes)");
@ -79,8 +75,8 @@ public class SendFiles extends DataHandler {
@Override
protected void runOnGameThread(Minecraft client, MinecraftServer server, boolean isClient) {
BCLib.LOGGER.info("Writing Files:");
for (Pair<DataExchange.AutoFileSyncEntry, byte[]> entry : receivedFiles) {
final DataExchange.AutoFileSyncEntry e = entry.first;
for (Pair<AutoFileSyncEntry, byte[]> entry : receivedFiles) {
final AutoFileSyncEntry e = entry.first;
final byte[] data = entry.second;
Path path = e.fileName.toPath();
BCLib.LOGGER.info(" - Writing " + path + " (" + data.length + " Bytes)");